Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как полученную картинку уменьшить в размерах и сохранить в БД 2 раза?

Сообщения:  [1-10] 

 
 автор: Сергей AZ   (13.01.2008 в 12:37)   письмо автору
 
   для: 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_img0000$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'>");

Тогда выводилась здоровенная картинка, но выводилась. А тут такая подстава...
Есть у кого-нить ответ?

   
 
 автор: Сергей AZ   (12.01.2008 в 16:53)   письмо автору
 
   для: cheops   (09.01.2008 в 13:49)
 

Ладно, я тут помутил немного, попробовал Ваш алгоритм (cheops'a). Работает клево, вот тока берет он начальные изображения, которые на сервере лежат. А у меня все фотки в БД лежат. Как мне быть? Как их в функцию resizeimg запихнуть, чтобы тот же алгоритм сработал? Помогите, плз!

   
 
 автор: semirax   (10.01.2008 в 17:00)   письмо автору
 
   для: cheops   (09.01.2008 в 13:49)
 

В принципе можно слепить встроенную процедуру которая пихает jpeg и его превьюшку в поля типа logblob в БД. Технически это делается, только будет возня с интерполяцией пикселов средствами mysql (алгоритм страниц на 10). Гораздо грамотнее, конечно же использовать GDlib.

   
 
 автор: cheops   (09.01.2008 в 13:49)   письмо автору
 
   для: Сергей AZ   (09.01.2008 в 10:44)
 

Прямо в базе данных изображения преобразовывать не получится, все манипуляции с библиотекой GDLib придётся делать на диске. Вот отображать изображения на странице без промежуточных копий на диске можно.

   
 
 автор: Сергей AZ   (09.01.2008 в 10:44)   письмо автору
 
   для: Trianon   (08.01.2008 в 19:30)
 

Ну возможно... Я не сильно еще рублю в этом. Я работал до сих пор тока с текстом в БД, но вот приходится разбираться с картинками. Другие файлы пока не стоит задача туда тулить. Сейчас у меня есть форма (анкета) для текстовых данных, плюс поле для ввода картинок.
первоначально у меня было решение сохранять текст в БД, а картинки - в отдельном файле. Потом вдруг показалось, что хранить все в БД будет удобнее... ненаю...
Здесь видел примеры только для работ по изменению размера картинок, сохраненных в отдельных файлах. Вот решил узнать о работе с картинками прямо в БД. Не знаю, что проще, не сталкивался просто с этим еще... поэтому прошу подсказки, в какую сторону смотреть...

   
 
 автор: Trianon   (08.01.2008 в 19:30)   письмо автору
 
   для: Сергей AZ   (08.01.2008 в 18:33)
 

для начала, наверное, независимо одно от другого научиться
а) принимать файлы от пользователей (любые, неважно картинки или нет)
б) оперировать картинками с помощью Gdlib, в частности определять размеры и изменять их
в) сохранять данные в БД и запрашивать их оттуда (любые, неважно картинки или нет)
г) выбрасывать контент в браузер с указанием типа контента

Иначе вопрос похож на "научите, как заезжать с КАДа в гараж задним ходом по четным числам с 19-00 до 19-15, а выезжать на КАД из гаража по нечетным с 9-30 до 9-40, оптимально добираясь при этом в аэропорт за 40 минут".

   
 
 автор: elenaki   (08.01.2008 в 18:47)   письмо автору
 
   для: Сергей AZ   (08.01.2008 в 18:33)
 

1. хранить в базе не картинки, а пути к ним, картинки заливать на сервер скриптом с одновременным изменением размера (скрипт есть в разделе Download)
2. позаботиться о безопасности (мало чего там эти юзеры пихнут в форму)
3. позаботиться о переименовании файлов (можно с учетом даты для удобства сортировки)
4. ну и красивый постраничный вывод превьшек и больших фоток (можно Аяксом)

   
 
 автор: Сергей AZ   (08.01.2008 в 18:33)   письмо автору
 
   для: Trianon   (07.01.2008 в 00:38)
 

А как тогда разбить задачи, чтобы проще потом реализовать было?

   
 
 автор: Trianon   (07.01.2008 в 00:38)   письмо автору
 
   для: Сергей AZ   (06.01.2008 в 23:36)
 

возможно, проще будет разделить проблему на несколько задач попроще?

   
 
 автор: Сергей AZ   (06.01.2008 в 23:36)   письмо автору
 
 

Подскажите, плз, такое дело...
Пока получаю ч-з форму картинки от пользователей, сохраняю в БД. Но они все разных размеров. Как мне пришедшую картинку подогнать под нужный размер с одной стороны, например, 500, (другой автоматически должен просчитываться), и тут же сохранить в БД превьюшку с размером 100?
Буду очблагодарен за помощь.

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования