【问题标题】:PHP+Imagick - PNG CompressionPHP+Imagick - PNG 压缩
【发布时间】:2011-11-19 17:47:06
【问题描述】:

如何有效地压缩 PNG?就我而言,这些图像是具有透明度的小灰度图像。

目前我正在玩这个:

// ...

$im->setImageFormat('png');
$im->setImageColorspace(\Imagick::COLORSPACE_GRAY);
$im->setImageCompression(\Imagick::COMPRESSION_LZW);
$im->setImageCompressionQuality(9);
$im->stripImage();
$im->writeImage($url_t);

由于 Imagick 不提供 COMPRESSION_PNG,我尝试了 LZW,但文件大小几乎没有变化(通常比以前更大)。

如果我在 GIMP 中打开图像并简单地保存它,文件大小会大大减小(例如 11,341 B --> 3,763 B 或 11,057 B --> 3,538)。

使用 Imagick 保存压缩 PNG 的正确方法是什么?

【问题讨论】:

  • @pekka,感谢您的链接!但是,我不确定它是否与 php 相同。我尝试使用压缩 00-99 保存我的图像,并且文件大小的 差异 最多约为 10%。但是一个简单的 GIMP 保存将大小降低到大约三分之一。还有什么我可能做错的吗?
  • 我遇到了同样的问题...不幸的是还没有找到好的答案。

标签: php compression png imagick


【解决方案1】:

我绝对不确定这是否是保存PNG的正确方法,但我的方法是:

$im->setImageCompression(\Imagick::COMPRESSION_UNDEFINED);
$im->setImageCompressionQuality(0);

这给了我完美的图像质量和文件大小,与 PS6 保存的“Save for Web”非常相似。有时甚至更小!

【讨论】:

    【解决方案2】:

    看看这个答案的第一部分:

    它解释了 ImageMagick 为 PNG 设置的 -quality 的含义 + 语法。

    【讨论】:

    • 嗨,我已经找到了一些解释这一点的定义。问题是,即使我尝试了所有可能的质量值,图像仍然比使用 GIMP 或类似应用保存时要大得多。
    • 如果你同时使用identify -verbose a.png,你应该看看输出的差异,Gimp 和 IM 生成的。也许 Gimp 使用 8 位深度,而您的 ImageMagick 设置为使用 16 位?或者 gimp 将颜色配置文件带在哪里?还是 Gimp 使用“调色板”来有效限制使用的颜色数量?
    • 如果您发布(链接)一对这样的 PNG 样本,我可以分析差异并可能告诉您一个 IM(命令行)调整,允许您直接从 IM 创建更小的 PNG(以及因此,来自 IMagick)...
    猜你喜欢
    • 1970-01-01
    • 2012-01-17
    • 2010-12-29
    • 2014-01-10
    • 2013-03-24
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多