【问题标题】:php imagick won't save PNG compressed but shows compressed in browserphp imagick不会保存压缩的PNG但在浏览器中显示压缩
【发布时间】:2014-01-10 21:07:36
【问题描述】:

我在 PHP 中有以下代码来截取 PDF 第一页的屏幕截图。

    $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 格式,因为那更有效。

最好的

阿山

【问题讨论】:

标签: php image compression png


【解决方案1】:

我认为这是由您的 writeImage 语句引起的。如果您编写 PNG 图像而没有指定 png8: 特别是在文件名中,您的图像将不会以该格式存储。本质上,setImageFormat 只会在您将图像作为字符串检索时才会起作用(echo $img)。

如果您执行以下操作:

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

它应该存储为 png8。您可以通过 identify -verbose 并检查深度/通道深度来验证这一点。

【讨论】:

  • 嗯...这有点工作得很好...我想这是迄今为止最好的解决方案。不知道!
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 2013-03-24
  • 2012-01-17
  • 2010-12-29
  • 2012-04-14
  • 2017-02-01
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多