Я использую простой эскиз, который я написал, и он довольно стандартен:
$imgbuffer = imagecreatetruecolor($thumbwidth, $thumbheight);
switch($type) {
case 1: $image = imagecreatefromgif($img); break;
case 2: $image = imagecreatefromjpeg($img); break;
case 3: $image = imagecreatefrompng($img); break;
case 6: $image = imagecreatefrombmp($img); break;
case 15: $image = imagecreatefromwbmp($img); break;
default: return log_error("Tried to create thumbnail from $img: not a valid image");
}
imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $thumbwidth, $thumbheight, $width, $height);
$output = imagepng($imgbuffer, "$album/thumbs/$imgname.png", 9);
9 - это настройка самого низкого качества, но из изображения JPEG размером 400 x 600 (при 56 КБ) я получаюминиатюра размером 27 кБ (140 х 140).Использование imagejpeg (качество 80) вместо imagepng составляет около 4 КБ.
Как это может быть, особенно при низком качестве изображения для imagepng?Я попытался использовать imagecopy вместо imagecopyresampled и imagecreate вместо истинной цветной версии.К сожалению, изображения получаются искаженными.
Есть ли способ получить миниатюры PNG с относительно небольшим размером файла (около 4 КБ при 140 x 140)?Или я должен использовать JPEG?