ImageMagick: How to batch append 4 parts of images into one (2 rows, 2 columns) (我有500多张图片需要这样组合)
ImageMagick: How to batch append 4 parts of images into one (2 rows, 2 columns) (I have 500+ images that need to be combined like this)
大家好!
我在 Windows 10 上使用 ImageMagick-7.0.10-Q16。我已经尝试使用谷歌搜索来寻找答案,但我仍然对如何做到这一点感到非常困惑。大多数答案都是针对 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。我知道上面的命令在最终合并之前使用合并的顶部和底部部分创建附加文件,但我不知道如何以其他方式创建此命令。我也愿意尝试其他 commands/things
在简单的 Windows BAT 脚本中使用 ImageMagick v7 你可以做这样的事情...
@echo off
setlocal EnableDelayedExpansion
for /l %%n in ( 1 1 9999 ) 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 V1=" 行是为了确保变量具有正确数量的前导零。
IM 命令将四张图像附加、裁剪和附加到正确排序的输出中,并将图像写入“0001merged.jpg”。然后它继续处理“*0002.jpg”等等。
我在 "for" 命令中使用“9999”处理的图像集数量设置了上限,以处理前导零的数量。确保该数量等于或大于您拥有的图像集的数量。它只会在超过图像集数量后为每个循环打印一个错误,但不会造成任何伤害。
注意:使用 ImageMagick v7 你应该只使用 "magick" 因为当你使用 "magick convert" 时它模拟 IMv6 行为。你可能通常不会想要那个。
大家好! 我在 Windows 10 上使用 ImageMagick-7.0.10-Q16。我已经尝试使用谷歌搜索来寻找答案,但我仍然对如何做到这一点感到非常困惑。大多数答案都是针对 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。我知道上面的命令在最终合并之前使用合并的顶部和底部部分创建附加文件,但我不知道如何以其他方式创建此命令。我也愿意尝试其他 commands/things
在简单的 Windows BAT 脚本中使用 ImageMagick v7 你可以做这样的事情...
@echo off
setlocal EnableDelayedExpansion
for /l %%n in ( 1 1 9999 ) 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 V1=" 行是为了确保变量具有正确数量的前导零。
IM 命令将四张图像附加、裁剪和附加到正确排序的输出中,并将图像写入“0001merged.jpg”。然后它继续处理“*0002.jpg”等等。
我在 "for" 命令中使用“9999”处理的图像集数量设置了上限,以处理前导零的数量。确保该数量等于或大于您拥有的图像集的数量。它只会在超过图像集数量后为每个循环打印一个错误,但不会造成任何伤害。
注意:使用 ImageMagick v7 你应该只使用 "magick" 因为当你使用 "magick convert" 时它模拟 IMv6 行为。你可能通常不会想要那个。