【问题标题】:ImageMagick batch montage all images in subfoldersImageMagick 批量蒙太奇子文件夹中的所有图像
【发布时间】:2019-04-16 16:34:33
【问题描述】:

我有一个包含 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 文件都是全新的。

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

【问题讨论】:

  • ImageMagick montage 不遍历子目录。您将有权访问每个子目录中的所有图像并将其提供给蒙太奇。抱歉,我不在 Windows 中编写代码。如果图像 1-4 位于同一子目录中,则需要在送入蒙太奇之前重新排列图像或在蒙太奇之后转置图像。在什么情况下它不起作用?
  • 您还需要指定这些图像相对于最终蒙太奇的顺序是否有任何偏好,即哪一个去哪里?
  • @fmw42 它根本不生成图像,但我也没有收到错误
  • magick 0/*.png -append ( 1/*.png -append ) ( 2/*.png -append ) ( 3/*.png -append ) +append result.png
  • @Marck Setchell。您的代码是 Unix 而不是 Windows。改变你的斜线并使用magick.exe。只使用附加的好主意。 magick.exe ( 0\*.png -append ) ( 1\*.png -append ) ( 2\*.png -append ) ( 3\*.png -append ) +append result.png

标签: image batch-file imagemagick imagemagick-convert


【解决方案1】:

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

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


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

【讨论】:

    【解决方案2】:

    您的示例循环遍历所有图像,但您仅在当前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
    

    注意我对@9​​87654327@ 不太熟悉,所以不确定双引号是否会导致问题,但我怀疑它是因为带有空格的路径会导致问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多