Перейти к содержимому

Фото
- - - - -

изменение картинки на лету (PHP)


  • Вы не можете создать новую тему
  • Please log in to reply
3 ответов в этой теме

#1 VR6_TURBO

VR6_TURBO
  • Новобранец
  • 5 сообщений

Отправлено 21 сентября 2004 - 20:28

Привет,

такая проблема.никак не могу разобраться с маштабированием картинки...imagecopyresampled всё никак не отладить...хочу, чтобы автоматически изменялся размер картинки и делался, скажем, 100 кБ.

Кто поможет? +)
  • 0

#2 crazy russian

crazy russian
  • Пользователь
  • 153 сообщений

Отправлено 21 сентября 2004 - 21:24

/* resizeToFile resizes a picture and writes it to the harddisk
*
* $sourcefile = the filename of the picture that is going to be resized
* $dest_x   = X-Size of the target picture in pixels
* $dest_y   = Y-Size of the target picture in pixels
* $targetfile = The name under which the resized picture will be stored
* $jpegqual   = The Compression-Rate that is to be used
*/

function resizeToFile ($sourcefile, $dest_x, $dest_y, $targetfile, $jpegqual)
{


/* Get the dimensions of the source picture */
$picsize=getimagesize("$sourcefile");

$source_x = $picsize[0];
$source_y  = $picsize[1];
$source_id = imageCreateFromJPEG("$sourcefile");

$target_id=imagecreatetruecolor($dest_x, $dest_y);
$target_pic=imagecopyresampled($target_id,$source_id,0,0,0,0,$dest_x,$dest_y,$source_x,$source_y);

imagejpeg ($target_id,"$targetfile",$jpegqual);

return true;

}


правда, это делает размер картинки меньше. но не ее вес.

Сообщение изменено: crazy russian (21 сентября 2004 - 21:25 )

  • 0

#3 archi

archi
  • Пользователь
  • 84 сообщений
  • Откуда:Таллин

Отправлено 21 сентября 2004 - 22:19

я могу ошибаться, но для того, чтобы подогнать под вес - надо будет просто пробовать делать несколько с разной степенью компрессии, используя imagejpeg.
используешь ту функцию, которую запостил уважаемый crazy russian, крутишь ее в цикле, увеличивая степень сжатия и стирая неудовлетворительные результаты. В итоге получишь требуемое.
Либо, однажды прогнав этот цикл ты можешь выяснить необходимую степень сжатия, которая с большой вероятностью для любого изображения даст необходимый размер при постоянном размере и использовать это сжатие всегда.
Ведь тебе, наверное, желательно иметь одинаковый конечный размер в пикселях для всех картинок, которые ты будешь уменьшать?
  • 0

#4 VR6_TURBO

VR6_TURBO
  • Новобранец
  • 5 сообщений

Отправлено 21 сентября 2004 - 23:18

да, все картинки должны быть одного размера
  • 0