【发布时间】:2020-06-09 15:41:27
【问题描述】:
大家! 我在 Windows 10 上使用 ImageMagick-7.0.10-Q16。我试过用谷歌搜索答案,但我仍然对如何做到这一点感到非常困惑。大多数答案都是针对 UNIX 而不是 Windows,我不知道这意味着什么,或者给了我错误。我没有任何编码或 Windows PowerShell 经验,请原谅我的缓慢
我已经扫描了分成四个 jpg 文件的书籍页面。图像以页码和相应作品的方向命名。 BL=左下角。 BR=右下角。 TR=右上角。 TL=左上角。 (BM = 合并的底部部分。TB = 合并的顶部部分)。所以“BL0001.jpg”是第 1 页的左下角。我没有提到它们的大小,因为我不希望它们被调整大小或其他任何东西。我只是希望它们像这样的拼图一样通过 append 组合起来: 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。我知道上面的命令在最终合并之前使用合并的顶部和底部部分创建附加文件,但我不知道如何制作这个命令。我也愿意尝试其他命令/东西
【问题讨论】:
-
setlocal EnableDelayedExpansion & for %%I in ("TL*.jpg") do set "NAME=%%~I" & magick convert "!NAME!" +append "TR!NAME:~2!" +append "BL!NAME:~2!" +append "BR!NAME:~2!"(虽然不知道magick,但主要是为了演示如何在批处理文件中循环)... -
我已将 [batch-file] 标签替换为 [batch-processing] 标签,因为您特别提到了 Windows powershell,并提供了您在其中使用的代码。您还在标题中使用了术语
batch append,在问题正文中使用了“batch” run,这些不是批处理文件! -
@aschipfl 谢谢!我不得不稍微改变一下magick命令,但可以正常工作
标签: powershell append imagemagick batch-processing imagemagick-convert