如何将多个文件名传递给 ImageMagick?

end*_*ith 1 windows command-line imagemagick

为了将多个图像平均在一起,通配符效果很好:

magick convert -average *.png out.png
Run Code Online (Sandbox Code Playgroud)

但是,如何在 Windows 命令行上指定多个输入图像而不使用通配符呢?(最终目标是制作一个批处理文件,以便我可以选择多个图像,然后使用 SendTo 菜单将它们组合起来,为此%*将收到"C:\...filename.png" "C:\...file2.png" "C:\...something.png"。)

Mar*_*ell 6

有几种选择...


选项1

您只需在命令行上枚举文件即可:

magick fred.png bill.png tina.png -average result.png
Run Code Online (Sandbox Code Playgroud)

我还没有尝试过这个,但从你的问题来看,以下内容应该有效,因为它直接相当于上面的示例:

magick %* -average result.png
Run Code Online (Sandbox Code Playgroud)

选项2

您可以将文件名写入文件并传递其名称,因此如果filelist.txt包含:

image1.png
image2.png
image3.png
Run Code Online (Sandbox Code Playgroud)

然后运行:

magick @filelist.txt -average result.png
Run Code Online (Sandbox Code Playgroud)

选项3

您可以将文件名列表发送到ImageMagickstdin

echo -e "file1.png\nfile2.png\file3.png" | magick @- -average result.png
Run Code Online (Sandbox Code Playgroud)

不确定如何在 BATCH 中进行换行 - 但\n以上是换行!

也许是:

( echo file1.png & echo file2.png & echo file3.png ) | magick @- -average result.png
Run Code Online (Sandbox Code Playgroud)

实际上自 v7 以来就隐式假定了这一点convert- 如果您这样做magick identify ...magick mogrify ...magick compose ...,则只需指定旧命令。