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 的回答可能就是这样。
我有一个包含 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 的回答可能就是这样。