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格式,因为那样效率更高。

最佳

阿赫桑

+0

http://stackoverflow.com/questions/7462827/phpimagick-png-compression –

我认为这是由于您的writeImage说法引起。如果您在未指定png8的情况下编写PNG图像:特别是在文件名中,图像将不会以该格式存储。实质上,setImageFormat只会在您将图像作为字符串(echo $ img)检索时影响。

如果你做到以下几点:

$img->writeImage ('png8:' . $name . ".png"); 

它应该被存储为PNG8。您可以通过标识-verbose并检查深度/通道深度来验证。

+0

嗯...有点工作得很好......我想这是迄今为止最好的解决方案。不知道! – Ahsan