我的简单目标是使用以下代码压缩PNG文件:
$image = imagecreatefrompng("test.png");
imagepng($image, "result.png", 9, PNG_ALL_FILTERS);
我也试过零和默认压缩,结果相同。
原始文件是这样的:
但是某些(不是全部)图像的结果是这样的:
唯一可以产生良好效果的方法是使用以下附加代码:
imagealphablending($image, false);
imagesavealpha($image, true);
为什么这种简单的图像处理会产生这种伪影?通过保存完整的alpha信息,我是否会遇到一些浏览器或不需要的文件大小的麻烦?
还有其他万无一失的解决方案,它会无损压缩png文件吗?