php imagick不会保存PNG压缩,但显示在浏览器中压缩
问题描述:
我有以下代码在PHP中采取PDF的第一页的屏幕截图。php imagick不会保存PNG压缩,但显示在浏览器中压缩
$name = getcwd()."\\testfile";
$img = new imagick();
$img->setResolution(200,200);
$img->readImage($name.'.pdf[0]');
$img->setImageResolution(100,100);
$img->resampleImage(100,100,imagick::FILTER_LANCZOS,1);
$img->setImageCompression(\Imagick::COMPRESSION_ZIP);
$img->setImageCompressionQuality('0');
$img->setImageFormat('png8');
$img->writeImage($name.".png");
header("Content-type : image/png");
echo $img;
此代码仅在Google Chrome的资源监视器选项卡中生成62kb的PNG。但Imagick()写的图像大于114kb。只是为了确保图像没有被压缩,或者我使用了一个称为TinyPNG的在线服务,并且他们将图像缩小到正确的62kb,我在浏览器中获得了其他任何问题...
这段代码有什么问题?另外我使用PNG8格式,因为那样效率更高。
最佳
阿赫桑
答
我认为这是由于您的writeImage说法引起。如果您在未指定png8的情况下编写PNG图像:特别是在文件名中,图像将不会以该格式存储。实质上,setImageFormat只会在您将图像作为字符串(echo $ img)检索时影响。
如果你做到以下几点:
$img->writeImage ('png8:' . $name . ".png");
它应该被存储为PNG8。您可以通过标识-verbose并检查深度/通道深度来验证。
+0
嗯...有点工作得很好......我想这是迄今为止最好的解决方案。不知道! – Ahsan
http://stackoverflow.com/questions/7462827/phpimagick-png-compression –