[php] Ресайз картинки.

2354570

Скрипт загружает jpeg-картинку и по ней создаёт маленькую превьюшку, всё - функции GD.
Но превьюшка жуткого качества, пикселизация и дизеринг (вообще ощущение, что палитра на 256 цветов).
Как это исправить? Может, есть другие функции? Я пользуюсь этими: imagecreatefromJPEG - открываю файл, imageCopyResized для ресайза, imageJpeg для сохранения.

Fragaria

1) у JPEG-картинки есть свойстао Качество, от 0 до 100, указывается при сохранении,
2) обрати внимание на функции
ImageCreateTrueColor;
Imagecopyresampled;

Fragaria

могу в приват кинуть пример скрипта, делающего thumbnail, но он из моего движка, так что там очень много лишних телодвижений, не знаю, разберёшься ли...

uncle17

на самом деле в GD далеко не лучший алгоритм JPEG реализован... так что и такие вещи скорей всего не сильно помогут

Fragaria

для thumb качественного вполне хватает, так что зря ты.

2354570

Спасибо, попробую эти функции. Кинь в приват код, гляну.

stalker33rus10

Вобще, правильно говорят, используй ImageCreateTrueColor вместо ImageCreate для создания превьюшки, тогда качество будет нормальное.

$qual=100;
//n_wid,n_hei,wid,hei - размеры превью и оригинала соответственно
$bd = imagecreatefromjpeg($f_i); //f_i - файл из которого делается превьюшка
$sd = imagecreatetruecolor($n_wid, $n_hei); //Новый маленький файл
imagecopyresized($sd, $bd, 0, 0, 0, 0, $n_wid, $n_hei, $wid, $hei);
imagejpeg($sd, $f_o, $qual); //f_o - файл куда сохраняется превьюшка
ImageDestroy($bd);
ImageDestroy($sd);

только для ImageCreateTrueColor нужен gd2, если я не путаю

Fragaria

да, gd2

2354570

Всем спасибо, помогло, работает как надо.
Оставить комментарий
Имя или ник:
Комментарий: