将多个命令行命令合并为一个命令(管道)
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
如何将以下 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