Привет,
такая проблема.никак не могу разобраться с маштабированием картинки...imagecopyresampled всё никак не отладить...хочу, чтобы автоматически изменялся размер картинки и делался, скажем, 100 кБ.
Кто поможет? +)
изменение картинки на лету (PHP)
Started By VR6_TURBO, сен 21 2004 20:28
3 ответов в этой теме
#2
Отправлено 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 )
#3
Отправлено 21 сентября 2004 - 22:19
я могу ошибаться, но для того, чтобы подогнать под вес - надо будет просто пробовать делать несколько с разной степенью компрессии, используя imagejpeg.
используешь ту функцию, которую запостил уважаемый crazy russian, крутишь ее в цикле, увеличивая степень сжатия и стирая неудовлетворительные результаты. В итоге получишь требуемое.
Либо, однажды прогнав этот цикл ты можешь выяснить необходимую степень сжатия, которая с большой вероятностью для любого изображения даст необходимый размер при постоянном размере и использовать это сжатие всегда.
Ведь тебе, наверное, желательно иметь одинаковый конечный размер в пикселях для всех картинок, которые ты будешь уменьшать?
используешь ту функцию, которую запостил уважаемый crazy russian, крутишь ее в цикле, увеличивая степень сжатия и стирая неудовлетворительные результаты. В итоге получишь требуемое.
Либо, однажды прогнав этот цикл ты можешь выяснить необходимую степень сжатия, которая с большой вероятностью для любого изображения даст необходимый размер при постоянном размере и использовать это сжатие всегда.
Ведь тебе, наверное, желательно иметь одинаковый конечный размер в пикселях для всех картинок, которые ты будешь уменьшать?