Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GD/PHP调整大小时优化PNG-如何确定调色板?_Php_Image_Resize_Png - Fatal编程技术网

使用GD/PHP调整大小时优化PNG-如何确定调色板?

使用GD/PHP调整大小时优化PNG-如何确定调色板?,php,image,resize,png,Php,Image,Resize,Png,我在调整PNG的大小和保持较小的文件大小方面遇到了困难 但是,在调整PNG的大小时,我遇到了有关图像质量的问题。据我所知,GD使用索引的8位调色板,会扭曲文本并丢失颜色,请参见: 稍作调整 ²我在这里找到的调整思路是:创建truecolor图像,调整其大小,然后将其复制到新图像,这样调色板将根据重采样结果确定,并且图像质量更好,如图中所示 问题:这两个结果都不令人满意 我确信一定有办法达到目的。确定调色板,以及2。保持图像的大部分颜色,以便3。PNG看起来与原始文件相似,并且具有可接受的

我在调整PNG的大小和保持较小的文件大小方面遇到了困难

但是,在调整PNG的大小时,我遇到了有关图像质量的问题。据我所知,GD使用索引的8位调色板,会扭曲文本并丢失颜色,请参见:

  • 稍作调整
²我在这里找到的调整思路是:创建truecolor图像,调整其大小,然后将其复制到新图像,这样调色板将根据重采样结果确定,并且图像质量更好,如图中所示

问题:这两个结果都不令人满意

我确信一定有办法达到目的。确定调色板,以及2。保持图像的大部分颜色,以便3。PNG看起来与原始文件相似,并且具有可接受的文件大小

现在,我只看到JPG而不是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);