要对多个图像进行平均,通配效果很好:
magick convert -average *.png out.png
但是我如何在不使用 globbing 的情况下在 Windows 命令行上指定多个输入图像? (最终目标是制作一个批处理文件,以便我可以选择多个图像,然后使用 SendTo 菜单组合它们,
%*
将收到 "C:\...filename.png" "C:\...file2.png" "C:\...something.png"
。)
有几种选择...
您可以在命令行中枚举文件:
magick fred.png bill.png tina.png -average result.png
我没试过这个,但从你的问题来看,以下应该有效,因为它直接等同于上面的例子:
magick %* -average result.png
您可以将文件名写入文件并传递其名称,因此如果
filelist.txt
包含:
image1.png
image2.png
image3.png
然后运行:
magick @filelist.txt -average result.png
您可以将文件名列表发送到 ImageMagick
stdin
:
echo -e "file1.png\nfile2.png\file3.png" | magick @- -average result.png
不确定您如何在 BATCH 中换行 - 但上面的
\n
是换行!
也许是:
( echo file1.png & echo file2.png & echo file3.png ) | magick @- -average result.png
convert
实际上是自 v7 以来隐式假定的 - 如果您执行 magick identify ...
或 magick mogrify ...
或 magick compose ...
等,您只需要指定旧命令
在 Powershell 中,
@
需要转义,如果您想将 args 传递到以下位置,可以将 '@files.txt'
替换为 '@-'
:
magick -dispose Previous -delay 0 '@files.txt' output.apng
如果需要准备文件列表,
gci -name *.png | out-file .\files.txt
Image Magick 中参数的顺序很重要,从 Image Magick 7.1 开始,这对我有用。