我有一个包含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文件都是全新的。
那么,如何修改我的脚本,使其遍历所有子文件夹,并根据子文件夹中的所有图像创建/转换单个蒙太奇/平铺图片?
答案 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
不太熟悉,因此不确定双引号是否会引起问题,但是我怀疑这是因为带空格的路径会引起问题。