Качество php imagejpeg воняет: почему? - PullRequest
5 голосов
/ 19 июня 2010

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

посмотрите на эти образцы , показав полный размер слева и миниатюры справа (просмотр на 100%). фотография выглядит смехотворно заостренной, но многие могут не беспокоиться об этом. хотя рисунок недопустим. эти кривые линии вообще не сглаживают и становятся пунктирными линиями.

я использую imagejpg (), и качество jpg, которое я выбираю, не влияет на хрусткость. Вот часть кода, окружающего его:

$tmp_img = imagecreatetruecolor( $maxSize, $maxSize );
$white = ImageColorAllocate ($tmp_img, 255, 255, 255);
ImageFill($tmp_img, 0, 0, $white);
imagecopyresized( $tmp_img, $img, $offsetx, $offsety, 0, 0, $new_width, $new_height, $width, $height );
$thumbFullPath = "{$pathToThumbs}/{$filenameNoExtension}.jpg";
imagejpeg( $tmp_img, $thumbFullPath, 90 );

есть идеи? это нормально? спасибо!

Ответы [ 3 ]

15 голосов
/ 19 июня 2010

Вы можете попробовать imagecopyresampled вместо imagecopyresized.Он медленнее, но использует более сложный алгоритм для определения цвета каждого пикселя в новом изображении.

6 голосов
/ 19 июня 2010

изменить последнюю строку на:

imagejpeg( $tmp_img, $thumbFullPath, 100 );

см .: http://us4.php.net/manual/en/function.imagejpeg.php

Также попробуйте использовать imagecopyresampled() вместо imagecopyresized()

см .: http://us4.php.net/manual/en/function.imagecopyresampled.php

0 голосов
/ 14 июля 2018
$imagepath = /path/to/image.jpg; 
$image = imagecreatefromjpeg($imagepath); 
header('Content-Type: image/jpeg'); 
imagejpeg($image, NULL, 100); 

Последняя строка так важна!

...