使用GD/PHP调整大小时优化PNG-如何确定调色板?
我在调整PNG的大小和保持较小的文件大小方面遇到了困难 但是,在调整PNG的大小时,我遇到了有关图像质量的问题。据我所知,GD使用索引的8位调色板,会扭曲文本并丢失颜色,请参见:使用GD/PHP调整大小时优化PNG-如何确定调色板?,php,image,resize,png,Php,Image,Resize,Png,我在调整PNG的大小和保持较小的文件大小方面遇到了困难 但是,在调整PNG的大小时,我遇到了有关图像质量的问题。据我所知,GD使用索引的8位调色板,会扭曲文本并丢失颜色,请参见: 稍作调整 ²我在这里找到的调整思路是:创建truecolor图像,调整其大小,然后将其复制到新图像,这样调色板将根据重采样结果确定,并且图像质量更好,如图中所示 问题:这两个结果都不令人满意 我确信一定有办法达到目的。确定调色板,以及2。保持图像的大部分颜色,以便3。PNG看起来与原始文件相似,并且具有可接受的
- 稍作调整
谢谢大家! 您只需更换
$newImage = imagecreate($newwidth,$newheight);
与
输出<代码>$maxImgWidth=200代码>
PHP的GD分叉没有可用的调色板生成,因此只能通过vanialla libpng压缩获得PNG32 对于带调色板的小PNG8,请使用pngquant,例如
然后用advpng或zopfli png进一步压缩。我昨天在面对这个问题时尝试过。但是主要的问题又出现了:文件太大。对于最初为47KB的示例图像,我得到了136KB。所以这不是一个解决方案。你应该问问题,而不是说
,所以这不是一个解决方案
你能保存上面的文件吗???它的18.5KB
没有重新调整其46KB
1KB的大小而比原来的低了。。。。既然你已经得出结论,我宁愿不再回答了。。祝你有美好的一天对不起我的措辞,英语不是我的母语。对不起。是的,你是对的,将图像的宽度调整为200px会产生一个小文件大小。。。我忘了在问题中提到我将图像的宽度调整为515px
+再次感谢您提供的解决方案!好的,我决定使用imagecreatetruecolor
,但随后使用imagejpeg($newImage,NULL,90)
而不是imagepng($newImage,NULL,6)
为我提供了(至少对于示例图像)相似的质量和相似的文件大小。
$newImage = imagecreate($newwidth,$newheight);
$newImage = imagecreatetruecolor($newwidth, $newheight);