ImageMagick批量修剪子文件夹中的所有图像

问题描述 投票:2回答:2

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

结构示例:

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

这是图像组合成一个图像的方式:

每列代表一个子文件夹。

我有+30个这样的文件夹,这就是为什么我想创建一个脚本而不是在Photoshop中手动创建它。

我下载了ImageMagick for Windows,并尝试创建一个我可以运行的批处理脚本。

我试过这个:

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

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

那么,如何修改我的脚本以便它遍历所有子文件夹并从子文件夹中的所有图像创建/转换单个蒙太奇/图块?

image batch-file imagemagick imagemagick-convert
2个回答
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的答案可能就是这样。


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所以不确定双引号是否会引起问题,但我怀疑它是否带有空格的路径会引起问题。

© www.soinside.com 2019 - 2024. All rights reserved.