将多个命令行命令合并为一个命令(管道)

Combine multiple command line commands into one single command (pipeline)

如何将以下 ImageMagick 命令行命令合并为一条指令:

convert -trim "C:\test\test.webp" -quality 95 "C:\test\testMaxNew.webp"
convert "C:\test\testMaxNew.webp" -resize 750x750 "C:\test\testMediumNew.webp" 
convert "C:\test\testMediumNew.webp" -thumbnail 100x100^ "C:\test\testSmallNew.webp"

经过反复试验,我想到了这个:

convert -trim C:\test\test.webp -quality 95 -write mpr:XY +delete \( mpr:XY +write C:\test\testLargeNew.webp +delete \)  \( mpr:XY -resize 750x750 +write C:\test\testMediumNew.webp +delete \) \( mpr:XY -resize 100x100^ -gravity center -extent 100x100 +write C:\test\testSmallNew.webp +delete \)

这样可以解决问题,但在命令行提示符中会报告以下错误:

> convert: unable to open image '\(': No such file or directory @
> error/blob.c/OpenBlob/2695. convert: no decode delegate for this image
> format `' @ error/constitute.c/ReadImage/508. convert: unable to open
> image '\)': No such file or directory @ error/blob.c/OpenBlob/2695.
> convert: no decode delegate for this image format `' @
> error/constitute.c/ReadImage/508. convert: unable to open image '\(':
> No such file or directory @ error/blob.c/OpenBlob/2695. convert: no
> decode delegate for this image format `' @
> error/constitute.c/ReadImage/508. convert: unable to open image '\)':
> No such file or directory @ error/blob.c/OpenBlob/2695. convert: no
> decode delegate for this image format `' @
> error/constitute.c/ReadImage/508. convert: unable to open image '\(':
> No such file or directory @ error/blob.c/OpenBlob/2695. convert: no
> decode delegate for this image format `' @
> error/constitute.c/ReadImage/508. convert: no images defined `\)' @
> error/convert.c/ConvertImageCommand/3235.

谁能解释为什么我会收到这些错误以及我的代码是否正确?

我尝试组合多个命令的原因是为了最大限度地减少处理时间。

版本:ImageMagick 7.0.2-0 Q16 x64 Windows 10

这些应该做你想要的。

最好在转换后立即读取输入。

我不确定您为什么需要调整大小和缩略图。

所以在 Imagemagick 中尝试以下操作之一:

convert "C:\test\test.webp" -trim +repage -quality 95 -resize 750x750 -thumbnail 100x100^ "C:\test\testSmallNew.webp"

或者只是

convert "C:\test\test.webp" -trim +repage -quality 95 -thumbnail 100x100^ "C:\test\testSmallNew.webp"

只是添加一个答案来澄清一些不适合发表评论的事情。

关于在 convert 之后立即读取输入图像,您已经从 Fred (@fmw42) 那里得到了一些很好的建议,因为这样当您升级到 ImageMagick[ 时,您的命令将继续工作 v7 已经推出几年了。

您已经添加了一个适用于您的问题的命令,但这有点笨拙,因为它创建了一个您不需要的 MPR,并且还不必要地创建和销毁图像 - 增加系统负载,如果你有很多图像要处理。我认为您可以看到以下更易于理解和维护,减少复制和删除以及对内存的需求,并且应该达到与您的命令相同的效果:

convert INPUT.webp -trim +repage -gravity center -quality 95 ^
   +write LARGE.webp                                         ^
   -resize 350x350 +write MEDIUM.webp                        ^
   -resize 100x100^ -extent 100x100 SMALL.webp