php ресайз картинок

N2
На сайте с 12.12.2009
Offline
52
1019

Есть задача из картинки 1280x1024 сделать картинку 1024x768

вот часть кода

$imag1 = imagecreatefromjpeg($_FILES['FILE']['tmp_name']);

$imag2 = imagecreatetruecolor($width2, $height2);
imagecopyresampled($imag2, $imag1, 0, 0, 0, 0, $width2, $height2, $width, $height);
ImageJPEG($imag2, 'new.jpg', 100)

Но возникает проблема что иногда новое изображения получаються большого объёма, понятно дело что когда картинка весила 800кб то она примерно столько же весить и будет, но иногда получаеться что картинка 1280x1024 весит 200кб а сделанная из неё 1024x768 - 800кб,

так вот вопрос в экономии дискового пространства, как не создавать картинки большого объёма и не ухудьшать качество, потому что при меньшем значении параметра качества в ф-ии ImageJPEG в некоторых изображениях страдает качество....

Я думаю что дело в том что картинки которые меньшего объёма уже с уменьшеным качеством, и качество их уменьшать не надо, так как это будет заметно....

видимо php пытаеться создать хорошее качество и отводит под это большой объём, а картинка всё равно не лучше оригинала...

Если кто знает, может быть можно задать в функции что бы она не меняла качество, или сделать в скрипте какоето автоматическое определение? повторюсь, что качество не должно ухутьшаться...

sirota77
На сайте с 08.09.2008
Offline
161
#1

ImageJPEG качество по умолчанию 75%

попробуйте 90

100 использовать - лишняя трата места

N2
На сайте с 12.12.2009
Offline
52
#2
sirota77:
ImageJPEG качество по умолчанию 75%
попробуйте 90
100 использовать - лишняя трата места

На нескольких примерах всё нормально, размер в разы меньше, но не известно как поведёт себя на разных картинках, раньше вроде пробовал и с параметром вроде 90 или 95 какаято картинка очень ухудьшалась, не помню точно, вроде когда есть тонкие волосяные линии..... буду пробовать...

есть ещё у кого нибудь идеи?

T.R.O.N
На сайте с 18.05.2004
Offline
314
#3
NONNON12:
но иногда получаеться что картинка 1280x1024 весит 200кб а сделанная из неё 1024x768 - 800кб,

так и должно быть.. ведь вы открываете файл, скорее всего, с q=75, а сохраняете 100.

В подавляющем количестве случаев, q=75 - достаточно для просмотра с экрана при условии, что сжималась картинка НЕ ИМЕЮЩАЯ СЖАТИЯ!

Если Вы сжимаете картинку, уже сжатую, идет наложение погрешностей + ухудшение от ресайза сжатой картинки. Отсюда и понижение качества....

NONNON12:
но не известно как поведёт себя на разных картинках

чем хуже оригинал - тем хуже результат

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
Thats right
На сайте с 29.08.2005
Offline
84
#4

Попробуйте ImageMagick, только внимательно почитайте доку и грамотно подберите параметры, иначе размеры картинок будут большими. Вообще с картинками ImageMagick справляется лучше. Вопрос насколько лучше - смотрите сами.

Магазин керамической плитки и керамогранита (http://www.sbsshop.ru)
root
На сайте с 04.07.2006
Offline
196
#5

NONNON12, я для себя путем нехитрых экспериментов получил оптимальную цифру: 93%,

качество остается отличное, размер примерно тот же.

vandamme
На сайте с 30.11.2008
Offline
675
#6

есть такой скрипт, точно для вас timthumb.php http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий