问题描述
我正在尝试通过从其他现有图像复制并使用 imagepng 功能来保存PNG图像,但是保存的文件的大小增加了。 Here is the initial image.
$destWidth = 1920;
$destHeight = 1080;
$srcWidth = 1920;
$srcHeight = 1080;
// im.png : 399,1 ko
// width : 1920
// heigth : 1080
$image = imagecreatefrompng('im.png');
$imageDest = imagecreatetruecolor($destWidth,$destHeight);
imagecopyresampled($imageDest,$image,$destWidth,$destHeight,$srcWidth,$srcHeight);
// imnew.png : 857,5 ko
imagepng($imageDest,'imnew.png');
初始图像为399,1 ko(1920x1080)。 但是结果图像为857,5 ko(仍为1920x1080)。 为什么呢还有什么不增加尺寸的解决方案吗?
解决方法
有很多方法可以将图像存储在PNG文件中。原始方法和PHP保存的图像之间使用的方法必须有所不同。参见:
https://www.w3.org/TR/2003/REC-PNG-20031110
如果您查看记录了imagepng()的手册,则可以看到PHP也有一些选项。例如$quality
参数。这是缩小文件的一种方法。
使用imagetruecolortopalette(),您可以尝试减小图像的色彩深度。这也可以使输出文件更小。
PHP不支持PNG文件格式支持的所有缩小图像的方法。