ImageMagick 如何将选项传递给 cwebp Linux



我正在运行

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian

我也在运行ImageMagick 6.9。

我想将PDF图像转换为WebP。AFAIK,开箱即用,Linux上的ImageMagick无法转换为WebP,所以我sudo apt-get install webp安装cwebp

cwebp允许指定-q参数,ImageMagick允许指定-quality参数。

当我运行$ cwebp -q 90 image.png -o image.webp时,转换它大约需要 8 秒cwebp。如果我运行convert image.png -quality 90 image.webp,ImageMagick 大约需要 30 秒来转换它。似乎-quality参数没有传递给cwebp.也可能是convert尝试运行无损转换的情况,这在cwebp是通过显式-lossless标志实现的。

我为 10 MB 的测试 png 图像运行测试命令。

我想用convert命令实现 8 秒的转换时间。我该怎么做?

我知道你想要imagemagick,但是如果你能够考虑替代方案,libvips可以在命令行上快速执行pdf -> webp,而无需任何配置。

例如,在我的2015年笔记本电脑上使用此PDF(奥迪R8手册(,我看到:

$ time convert -density 600 r8.pdf[3] -quality 90 x.webp
real    0m36.699s
user    0m23.787s
sys 0m1.628s
$ vipsheader x.webp
x.webp: 9921x4961 uchar, 3 bands, srgb, webpload

我认为这与你所看到的时代大致一致。

使用libvips,我看到:

$ time vips copy r8.pdf[dpi=600,page=3] x.webp[Q=90]
real    0m7.195s
user    0m6.861s
sys 0m0.505s
$ vipsheader x.webp
x.webp: 9921x4961 uchar, 3 bands, srgb, webpload

相同的结果,但在您的 8 秒时间预算内。

如果您想更好地控制压缩,您可以设置许多其他 webp 选项。

事实证明,委托是使用/etc/ImageMagick-6/delegates.xml中的规则调用的。

它列出了一堆有关如何在不同类型的图像之间进行转换的规则。

对于我的情况,png->webp转换,我需要字符串:<delegate decode="png" encode="webp" command="&quot;cwebp&quot; -quiet %Q &quot;%i&quot; -o &quot;%o&quot;"/>

在这个文件中,我不知道-quaility参数值,似乎没有办法捕获它。

但是,如果您希望保留-q参数的值以进行cwebp,则可以选择将-q $YOUR_VALUE硬编码到delegate标记内的command中。

此解决方案仍然比直接调用cwebp慢,因为 ImageMagick 在调用委托之前最多可能需要 8 秒。

相关内容

  • 没有找到相关文章

最新更新