Эта проблема
Я пытаюсь изменить размер 260x310px PNG до 120x120px, сохраняя при этом прозрачность и центрируя изображение. Я включил функцию, которую я использую ниже, она отлично работает с точки зрения внешнего вида изображения, однако созданные изображения намного больше. На самом деле все изображения имеют размер 128 КБ (их тысячи, я не просматривал их все), а каталог из 50 000 этих изображений на 1 ГБ больше, несмотря на то, что изображения имеют более половины размера (в пикселях).
Я предполагаю, что это потому, что PHP не выполняет никакой оптимизации, как это может сказать Photoshop. Есть ли что-нибудь, что я могу сделать, чтобы оптимизировать изображение в PHP?
Код
Это мой код:
if ($handle = opendir($mydir_path)) {
while (false !== ($entry = readdir($handle))) {
if(strpos($entry, '.png'))
{
resize($mydir_path.$entry);
}
}
closedir($handle);
}
function resize($img_loc)
{
$mini_loc = str_replace('megapack', 'handheld_megapack', $img_loc);
$canvas = imagecreatetruecolor(310, 310);
imagefill($canvas, 0, 0, imagecolorallocatealpha($canvas, 255, 255, 255, 127));
imagealphablending($canvas, false);
imagesavealpha($canvas, true);
$img = imagecreatefrompng($img_loc);
imagecopy($canvas, $img, 25, 0, 0, 0, 260, 310);
$resizedImg = imagecreatetruecolor('120', '120');
imagefill($resizedImg, 0, 0, imagecolorallocatealpha($resizedImg, 255, 255, 255, 127));
imagealphablending($resizedImg, false);
imagesavealpha($resizedImg, true);
imagecopyresampled($resizedImg, $canvas, 0, 0, 0, 0, '120', '120', '310', '310');
$dirname = dirname($mini_loc);
imagepng($resizedImg, $mini_loc, '0');
chmod($mini_loc, 0666);
return $mini_loc;
}