phpThumb (imagecreatefromjpeg) на белых изображениях генерирует полосы #fefefe

У меня большая проблема с созданием превьюшек с помощью phpThumb (или любой другой библиотеки для изменения размера изображений)

Сначала позвольте мне показать вам видимую проблему: http://aep.w3mt.biz/content/mediacontent/products/427/aztec-pearls-1.jpg_gz.jpg (это сгенерированное изображение) http://aep.w3mt.biz/content/mediacontent/products/427/aztec-pearls-1.jpg (это исходное изображение)

Как видите, изображение больше и сгенерировано с помощью php thumb, 100% качество, цвет заливки.

Фон исходного изображения чисто белый, но фон сгенерированного изображения имеет горизонтальные полосы #fefefe. Это заметно и очень раздражает на кристально чистых дисплеях.

Мне интересно, была ли у кого-нибудь эта проблема и есть ли решение для этой ошибки.

Сгенерированы другие размеры:

Заранее спасибо!


person Lucian Vasile    schedule 09.05.2014    source источник


Ответы (1)


Вот как я создаю эскизы, вы можете попробовать это:

header("Content-type: image/jpeg");
$collection = $_GET['collection'];
$ref        = $_GET['ref'];
$maxthumb=100;
$filename=DirectoryNameFromCollectionNumber($collection) . "/" . $ref . ".jpg";
$size = getimagesize($filename);
$ratio = $size[0]/$size[1]; // width/height
if( $ratio > 1) {
    $width = $maxthumb;
    $height = $maxthumb/$ratio;
}
else {
    $width = $maxthumb*$ratio;
    $height = $maxthumb;
}
$src = imagecreatefromstring(file_get_contents($filename));
$dst = imagecreatetruecolor($width,$height);
imagecopyresampled($dst,$src,0,0,0,0,$width,$height,$size[0],$size[1]);
imagedestroy($src);
imagejpeg($dst);
imagedestroy($dst);
person Mark Setchell    schedule 09.05.2014