将ImageMagick蒙太奇与文件名substring变量一起使用

时间:2017-10-04 12:43:32

标签: windows command-line imagemagick montage

我只有非常基本的编程和命令行技能,因此我对以下内容感到有点难过。

我有一个包含如下图像文件的目录:

abc_B.jpg
abc_G.jpg
abc_R.jpg
abc_RGB.jpg
defg_B.jpg
defg_G.jpg
defg_R.jpg
defg_RGB.jpg
etc...

我想使用ImageMagick将四组R,G,B和RGB图像拼接在一起。对于一组单独的图像,这非常简单:

montage *_B.jpg *_G.jpg *_R.jpg *_RGB.jpg [some arguments] montage.jpg 

事实上,我已经将四组图像复制到临时目录中并运行上述命令。但是,对于较大的图像集,这当然不是非常有效或实用。但是要在整个目录上运行它,需要有一种方法来获取文件名的' abc',' defg'等部分并将其放入变量中(让& #39; s称之为%v)并运行如下:

montage %v_B.jpg %v_G.jpg %v_R.jpg %v_RGB.jpg [some arguments] %v_montage.jpg 

现在,要迭代目录中的文件,请执行FOR命令。但我不知道如何使用四个文件组来处理它,以及如何提取和使用文件名子字符串来使其工作。

非常感谢一些帮助。

1 个答案:

答案 0 :(得分:0)

它可能看起来像这样 - 将其存储为GO.BAT:

@ECHO OFF
FOR /F "delims=_" %%G IN ('DIR /B *_R.JPG') DO (
    ECHO MONTAGE %%G_R.JPG %%G_G.JPG %%G_B.JPG %%G_RGB.JPG ... montage_%%G.JPG
)

示例输出

MONTAGE abc_R.JPG abc_G.JPG abc_B.JPG abc_RGB.JPG ... montage_abc.JPG
MONTAGE defg_R.JPG defg_G.JPG defg_B.JPG defg_RGB.JPG ... montage_defg.JPG

如果你喜欢它,你会删除ECHO,因为此刻除了告诉你它会做什么之外什么都不做!

我在命令中使用DIR /B以避免获取标题,我只列出*_R.JPG,以便每个文件名只出现一次 - 而不是四次。

有一个方便的参考here