ImageMagick如何将选项传递给cwebp Linux

ImageMagick如何将选项传递给cwebp Linux,imagemagick,imagemagick-convert,converters,webp,Imagemagick,Imagemagick Convert,Converters,Webp,我在跑步 $cat/etc/os发行版 PRETTY_NAME=“Debian GNU/Linux 9(扩展)” NAME=“Debian GNU/Linux” VERSION_ID=“9” VERSION=“9(拉伸)” ID=debian 我还运行ImageMagick 6.9 我想将PDF图像转换为WebP。顺便说一句,Linux上的ImageMagick无法转换为WebP,因此我sudo apt get install WebP,它安装cwebp cwebp允许指定-q参数,Image

我在跑步

$cat/etc/os发行版
PRETTY_NAME=“Debian GNU/Linux 9(扩展)”
NAME=“Debian GNU/Linux”
VERSION_ID=“9”
VERSION=“9(拉伸)”
ID=debian
我还运行ImageMagick 6.9

我想将PDF图像转换为WebP。顺便说一句,Linux上的ImageMagick无法转换为WebP,因此我
sudo apt get install WebP
,它安装
cwebp

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

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

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


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

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

它列出了一系列关于如何在不同类型的图像之间转换的规则

对于我的例子,
png
->
webp
转换,我需要字符串:

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

但是,如果您希望保留
cwebp
-q
参数的值,您可以选择将
-q$您的_值
硬编码到
委托
标记内的
命令


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

> P>我意识到你想要IMAGE,但是如果你能考虑替代的话,可以在命令行上快速地做PDF->WebP,而不需要任何配置。 例如,在我的2015笔记本电脑上,我看到:

$ 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的参数,您可以在delegates.xml文件中修改或创建一个条目。另见