ImageMagick: 如何批量将目录中的多个TIFF文件合并为一个TIFF文件?

3

我有一个文件夹 c:\temp,里面有600个TIFF文件。

这些文件的文件名类似于:

001_1.tif,
001_2.tif,
001_3.tif

002_1.tif,
002_2.tif,
002_3.tif
....
....
200_1.tif,
200_2.tif,
200_3.tif

这些合并后的文件应该放在同一个目录中,文件名应该命名为:
1_merged.tif
2_merged.tif
.....
.....
200_merged.tif

我正在寻找任何单个命令行/批处理文件,通过ImageMagick的convert/ mogrify命令或其他命令/工具来完成此操作。
请注意,总耗时不应超过5秒。

它们应该如何组合-叠放在一起、上下排列还是并排?所需时间取决于您输入的图像大小和数量以及使用的硬件。 - Mark Setchell
感谢马克的反馈。 - Arijit Roy
2个回答

5
假设您想将600个单页TIFF合并为一个多页TIFF(每组3个),只需执行以下简单操作:
 convert  001_*.tiff  1_merged.tiff
 convert  002_*.tiff  2_merged.tiff
 [....]
 convert  200_*.tiff  200_merged.tiff

请注意,目前没有人能够保证任何时间/性能基准......至少在我们还不知道您的输入TIFF文件的确切构成方式时。 (它们是10000x10000像素还是20x20像素?它们是彩色还是灰度?等等)

这与Mark的答案不同,因为他似乎假设您想将所有输入文件合并成一个1页图像,其中原始文件在较大页面上平铺......


2
这应该可以解决 - 我会让你进行错误检查,以防你没有实际拥有你建议的所有图像!
@ECHO OFF
setlocal EnableDelayedExpansion
FOR /L %%A IN (1,1,200) DO (
   set "formattedValue=000000%%A"
   set "x=!formattedValue:~-3!"
   convert !x!_*.tif +append !x!_merged.tif
   echo !x!
)

因此,如果您的图像如下所示:
001_1.tif
001_2.tif
001_3.tif
则在merged_001.tif中会得到这个结果:
如果将+append更改为-append,则merged_001.tif将如下所示:
如果完全删除+append,则会得到200个每个具有3页的多页TIF文件 - 与Kurt的回答相同。

谢谢 Mark。稍作修改,使用-adjoin而不是-append即可获取多页TIF图像。但处理所需时间大约30秒。我已在Windows 7上测试,Intel(R) Core(TM) i3 CPU 550 @3.20 GHZ,RAM为4GB。我的文件大小为..1.tf-> ~270 KB,..2.tf-> ~16 KB,..3.tif->10 KB。是否有什么解决方法可以在5-10秒内完成?感谢您的反馈。 - Arijit Roy
1
你可以尝试在convert前面加上start /b,这样200个convert进程就可以并行运行了。不确定Windows能否处理得好,也许最初可以尝试使用4个并行转换进行实验。或者在脚本中添加一个参数,即“开始”和“结束”数字,然后使用1-50运行一个,使用51-100运行第二个,以此类推,所有4个并行运行。 - Mark Setchell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接