ImageMagick批处理蒙太奇子文件夹中的所有图像

时间:2019-04-16 16:34:34

标签: image batch-file imagemagick imagemagick-convert

我有一个包含4个子文件夹的文件夹,每个子文件夹都包含4张图像(总共16张图像)。我想将这16张图片合并为一张图片。

结构示例:

0/0.png
0/1.png
...
1/0.png
1/1.png
...
3/3.png

这是将图像合并为一张图像的方式:

每列代表一个子文件夹。

我有+30个这些文件夹,这就是为什么我要创建一个脚本而不是在Photoshop中手动执行的原因。

我下载了适用于Windows的ImageMagick,并尝试创建可以运行的批处理脚本。

我尝试过:

cd %cd%
for /r /d %%a in (*.png) do montage -tile 5x4 "result.png"

这不起作用(没有图像,也没有CMD错误)。请注意,我对ImageMagick和在Windows中创建.bat文件都是全新的。

那么,如何修改我的脚本,使其遍历所有子文件夹,并根据子文件夹中的所有图像创建/转换单个蒙太奇/平铺图片?

2 个答案:

答案 0 :(得分:2)

我不知道Windows脚本语法。但是,如果您遍历30个目录中的每个目录,并从Mark Setchell运行以下ImageMagick命令(将其转换为Windows斜杠),则应该可以。

magick.exe ( 0\*.png -append ) ( 1\*.png -append ) ( 2\*.png -append ) ( 3\*.png -append ) +append result.png


由于我不知道Windows .bat脚本,因此Gerhard Barnard的答案可能就是这样做的。

答案 1 :(得分:0)

您的示例循环遍历所有图像,但是您仅在当前dir而不是子目录中进行操作。该命令甚至在任何地方都不使用元变量%%a,如果使用过,它将分别对每个文件执行do函数。

您可以使用dir遍历图像,获取每张图像,然后使用set /p批量添加它们。因此,无论您拥有多少张图像,都应循环遍历它们。在这里,我只是将结果存储在一个tmp文件中,以便在另一个循环中使用它,但是有很多方法。

@echo off
set "myt=%temp%out.tmp"
for /f %%i in ('dir /b /a-d /S *.png') do echo| set /p = ("%%~fi" -append)>>"%myt%"
for /f "delims=" %%b in (%myt%) do magick.exe %%b +append result.png
del /Q "%myt%">nul

注意我对magick不太熟悉,因此不确定双引号是否会引起问题,但是我怀疑这是因为带空格的路径会引起问题。