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

ImageMagick batch montage all images in subfolders

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

结构示例:

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 文件都是全新的

那么,如何修改我的脚本,使其遍历所有子文件夹,并从子文件夹中的所有图像中 creates/convert 一个 montage/tile?

您的示例遍历所有图像,但您仅在当前 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 所以不确定双引号是否会引起问题,但我怀疑它是因为带空格的路径会引起问题.

我不知道 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 的回答可能就是这样。