ImageMagick:如何将4个图像部分批量添加为一个(2行2列)(我有500多个图像需要像这样组合)

问题描述 投票:0回答:1

每个人!我在Windows 10上使用ImageMagick-7.0.10-Q16。我尝试使用Google搜索来寻找答案,但是我对如何执行此操作仍然感到困惑。大多数答案是针对UNIX而非Windows的,我不知道这是什么意思,或者给我错误。我没有任何编码或Windows PowerShell的经验,所以请原谅我的缓慢

我已经扫描了分成四张jpg文件的书页。图像以页码和相应的片的方向命名。 BL =左下角。 BR =右下角。 TR =右上角。 TL =左上。 (BM =合并的底部片段。TB =合并的顶部片段)。因此,“ BL0001.jpg”是页面1的左下部分。我没有提及它们的大小,因为我不想调整它们的大小或其他任何东西。我只是希望通过诸如以下难题的添加来组合它们:Combined jpg pieces.边框和文本框仅用于演示,不包括在内

所以文件是这样的:

BL0001.jpg
BR0001.jpg
TL0001.jpg
BR0001.jpg

BL0002.jpg
BR0002.jpg
TL0002.jpg
BR0002.jpg
And so on...

这是我在Windows PowerShell中尝试的最后一件事:

magick convert B*0001.jpg +append 0001BM.jpg
magick convert T*0001.jpg +append 0001TM.jpg
magick convert 0001*.jpg +swap -append 0001merged.jpg

这就像我想要的那样将4个部分组合成一个图像。我发现添加*像通配符一样工作,并且一次性将所有图像如BR和TR合并在一起。但是我无法对页码执行此操作(在本例中为“ B * 0001.jpg”中的“ 0001”),因为那样会将文件夹中的所有文件合并到同一张图片中,这是我不想要的。因此,我想弄清楚的是如何使用不同页面的顺序编号系统来“批量”运行此命令。换句话说,使用命令将一幅图像批量合并为一个图像,但所有扫描的页面均以jpg格式存在于文件夹中。我知道上面的命令会在最终合并之前用合并的顶部和底部创建附加文件,但是我不知道如何使用此命令。我也愿意尝试其他命令/事物

powershell append imagemagick batch-processing imagemagick-convert
1个回答
0
投票

在简单的Windows BAT脚本中使用ImageMagick v7,您可以执行以下操作...

@echo off
setlocal EnableDelayedExpansion

for /l %%n in ( 1 1 999 ) do (
   set V1=000%%n
   set V1=!V1:~-4!
   magick *!V1!.jpg +append -crop 2x1@ +swap -append +repage !V1!merged.jpg
)

exit /b

这使用“ for”循环将所有四个“ * 0001.jpg”图像一次读入ImageMagick命令。 “ set V!=”行是为了确保变量具有正确的前导零个数。

IM命令将四个图像追加,裁剪并追加到正确排序的输出中,并将图像写为“ 0001merged.jpg”。

然后继续处理“ * 0002.jpg”,依此类推。我在“ for”命令中对要使用“ 999”处理的图像集的数量设置了上限,以使用前导零的数量。确保该数量等于或大于您所拥有的图像集数量。如果超过图像集数量,它将仅打印错误。

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