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

问题描述 投票:0回答:2

要对多个图像进行平均,通配效果很好:

magick convert -average *.png out.png

但是我如何在不使用 globbing 的情况下在 Windows 命令行上指定多个输入图像? (最终目标是制作一个批处理文件,以便我可以选择多个图像,然后使用 SendTo 菜单组合它们,

%*
将收到
"C:\...filename.png" "C:\...file2.png" "C:\...something.png"
。)

windows command-line imagemagick
2个回答
5
投票

有几种选择...


选项一

您可以在命令行中枚举文件:

magick fred.png bill.png tina.png -average result.png

我没试过这个,但从你的问题来看,以下应该有效,因为它直接等同于上面的例子:

magick %* -average result.png

选项2

您可以将文件名写入文件并传递其名称,因此如果

filelist.txt
包含:

image1.png
image2.png
image3.png

然后运行:

magick @filelist.txt -average result.png

选项3

您可以将文件名列表发送到 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 ...
等,您只需要指定旧命令


0
投票

在 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 开始,这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.