我有一个刚刚上传的php图像优化脚本,适用于jpg和png,但png图像的问题在于它在png图像上添加了黑色背景,但应保持图像的透明度。我在Google上浏览了一下,发现了一个对其他人有用的解决方案,但不幸的是对我不起作用,下面是我对png函数使用的脚本。认为我已经解决了,我更新了下面的代码
function optimize_png($file) {
if(!isset($GLOBALS['pngquality']) ||
!is_numeric($GLOBALS['pngquality'])) {
return false;
}
if($GLOBALS['pngquality'] > 9 || $GLOBALS['pngquality'] < 0) {
$GLOBALS['pngquality'] = 9;
}
list($w,$h) = @getimagesize($file);
if(empty($w) || empty($h)) {
return false;
}
$src = imagecreatefrompng($file);
$tmp = imagecreatetruecolor($w,$h);
imagealphablending($tmp, false );
imagesavealpha($tmp, true );
imagecopyresampled($tmp,$src,0,0,0,0,$w,$h,$w,$h);
$src = imagepng($tmp,$file,$GLOBALS['pngquality']);
imagedestroy($tmp);
return true;
}