|
|
|
|
|
для: cheops
(09.01.2008 в 13:49)
| | Ну вот, где-то разобрался... прочитал, что может помочь функция "ImageCreateFromString", тестовый файл получился таким:
<? $db = mysql_connect ("localhost","","");
mysql_select_db ("aqua",$db);
$result = mysql_query ("SELECT scr FROM aqua_data WHERE id=$id",$db);
$myrow = mysql_fetch_array ($result);
$img = ImageCreateFromString($myrow["scr"]);
imagejpeg($img, 'img/from_db.jpg');
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
$filename = $filename;
// Имя файла с уменьшенной копией.
$smallimage = $smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
imagejpeg($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
$image = resizeimg('img/from_db.jpg', 'img/small_from_db.jpg', '150', '150');
echo ("<img src='img/small_from_db.jpg'>");
?>
|
После забивания в адресной строке прямого адреса тестового файла, выводится то, что нужно, уменьшенная картинка. НО! На test.php в другом файле есть ссылка:
<img src='test.php?id=$id'>
|
А вот тут есть проблема... не показывается ничего... Вот я еще пока не могу догнать, почему при этой же ссылке картинка была, когда в тестовом файле не было кода уменьшения картинки, а было простое:
header ("Content-type: image/jpeg");
echo ("<img src='img/small_from_db.jpg'>");
|
Тогда выводилась здоровенная картинка, но выводилась. А тут такая подстава...
Есть у кого-нить ответ? | |
|
|
|
|
|
|
|
для: cheops
(09.01.2008 в 13:49)
| | Ладно, я тут помутил немного, попробовал Ваш алгоритм (cheops'a). Работает клево, вот тока берет он начальные изображения, которые на сервере лежат. А у меня все фотки в БД лежат. Как мне быть? Как их в функцию resizeimg запихнуть, чтобы тот же алгоритм сработал? Помогите, плз! | |
|
|
|
|
|
|
|
для: cheops
(09.01.2008 в 13:49)
| | В принципе можно слепить встроенную процедуру которая пихает jpeg и его превьюшку в поля типа logblob в БД. Технически это делается, только будет возня с интерполяцией пикселов средствами mysql (алгоритм страниц на 10). Гораздо грамотнее, конечно же использовать GDlib. | |
|
|
|
|
|
|
|
для: Сергей AZ
(09.01.2008 в 10:44)
| | Прямо в базе данных изображения преобразовывать не получится, все манипуляции с библиотекой GDLib придётся делать на диске. Вот отображать изображения на странице без промежуточных копий на диске можно. | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2008 в 19:30)
| | Ну возможно... Я не сильно еще рублю в этом. Я работал до сих пор тока с текстом в БД, но вот приходится разбираться с картинками. Другие файлы пока не стоит задача туда тулить. Сейчас у меня есть форма (анкета) для текстовых данных, плюс поле для ввода картинок.
первоначально у меня было решение сохранять текст в БД, а картинки - в отдельном файле. Потом вдруг показалось, что хранить все в БД будет удобнее... ненаю...
Здесь видел примеры только для работ по изменению размера картинок, сохраненных в отдельных файлах. Вот решил узнать о работе с картинками прямо в БД. Не знаю, что проще, не сталкивался просто с этим еще... поэтому прошу подсказки, в какую сторону смотреть... | |
|
|
|
|
|
|
|
для: Сергей AZ
(08.01.2008 в 18:33)
| | для начала, наверное, независимо одно от другого научиться
а) принимать файлы от пользователей (любые, неважно картинки или нет)
б) оперировать картинками с помощью Gdlib, в частности определять размеры и изменять их
в) сохранять данные в БД и запрашивать их оттуда (любые, неважно картинки или нет)
г) выбрасывать контент в браузер с указанием типа контента
Иначе вопрос похож на "научите, как заезжать с КАДа в гараж задним ходом по четным числам с 19-00 до 19-15, а выезжать на КАД из гаража по нечетным с 9-30 до 9-40, оптимально добираясь при этом в аэропорт за 40 минут". | |
|
|
|
|
|
|
|
для: Сергей AZ
(08.01.2008 в 18:33)
| | 1. хранить в базе не картинки, а пути к ним, картинки заливать на сервер скриптом с одновременным изменением размера (скрипт есть в разделе Download)
2. позаботиться о безопасности (мало чего там эти юзеры пихнут в форму)
3. позаботиться о переименовании файлов (можно с учетом даты для удобства сортировки)
4. ну и красивый постраничный вывод превьшек и больших фоток (можно Аяксом) | |
|
|
|
|
|
|
|
для: Trianon
(07.01.2008 в 00:38)
| | А как тогда разбить задачи, чтобы проще потом реализовать было? | |
|
|
|
|
|
|
|
для: Сергей AZ
(06.01.2008 в 23:36)
| | возможно, проще будет разделить проблему на несколько задач попроще? | |
|
|
|
|
|
|
| Подскажите, плз, такое дело...
Пока получаю ч-з форму картинки от пользователей, сохраняю в БД. Но они все разных размеров. Как мне пришедшую картинку подогнать под нужный размер с одной стороны, например, 500, (другой автоматически должен просчитываться), и тут же сохранить в БД превьюшку с размером 100?
Буду очблагодарен за помощь. | |
|
|
|
|