如何将文件列表传递给 ImageMagick 的蒙太奇?

Dev*_*she 4 imagemagick

我有大量的瓷砖,具有以下命名约定:

A-x-y.jpg
Run Code Online (Sandbox Code Playgroud)

在哪里

0<=x<=16 &
0<=y<=14
Run Code Online (Sandbox Code Playgroud)

现在我知道我们可以使用ImageMagick 中的蒙太奇工具,将它们合并成一个完整的图像。

理想情况下,我可以使用以下命令行:

montage *.jpg -geometry +0+0 -tile 17x15 all.jpg
Run Code Online (Sandbox Code Playgroud)

但我的文件是 A-0-0.jpg 直接在 A-0-1.jpg 上方,A-0-2.jpg 上方和 A-1-0.jpg 位于 A-0 的右侧-0.jpg。

所以当我使用上述命令时,顺序是错误的。我有一个顺序正确的文本文件。我可以使用文本文件作为蒙太奇的输入吗?如果是这样,我该怎么做?

Dev*_*she 7

在较新版本的 ImagMagick(即 >v6.5.2-1)中, @运算符可以这样使用:

montage @list.txt -geometry +0+0 -tile 17x15 all.jpg
Run Code Online (Sandbox Code Playgroud)


Dub*_*ubu 3

看起来蒙太奇不支持“带文件名的文件”参数。

编辑: @Devdatta 找到了正确的语法(另请参阅此处@filenames.txt:。因此,下面的方法只适用于非常旧版本的 ImageMagick 工具。


但如果您使用的是 Linux 或类 Unix 系统,则可以将文件名参数替换为命令的输出。这样,您就可以使用具有有序文件名的文件:

montage `cat filenames.txt` -geometry +0+0 -tile 17x15 all.jpg
Run Code Online (Sandbox Code Playgroud)

(请注意 cat 命令周围的反引号。)

文件名之间的换行符filename.txt不会损害命令调用。您甚至可以在 中使用通配符filename.txt,因为命令替换先于文件名扩展。

当然,您也可以预先重命名源文件以产生所需的顺序。