问题描述
设置
假设我们有一个 N 元素的列表,其中一个元素可以要么是图像的路径(例如 a.jpg
)或 NULL 表示文件丢失。
示例 (N = 6):a.jpg,NULL,c.jpg,f.jpg
所有提及的图像(a.jpg
、c.jpg
、f.jpg
)都保证具有相同的分辨率。
任务
创建一个固定宽度的 montage
(例如 out.jpg
),其中 NULL 值被替换为 黑色 图像,其分辨率与a.jpg
、c.jpg
、f.jpg
的常见分辨率。我不想创建实际的 black.jpg
,而是希望根据需要即时创建图像。
解决方法
使用 ImageMagick 的“蒙太奇”命令,如果您的图像尺寸已知,那么您可以将其包含在命令中,并且如果您可以生成图像文件的文本文件“list.txt”并将“xc:black”放在每一行都没有像这样的图像......
image00.png
image01.png
image02.png
image03.png
image04.png
xc:black
image06.png
image07.png
xc:black
xc:black
image10.png
image11.png
您可以像这样运行 ImageMagick 的“蒙太奇”命令...
magick montage @list.txt -tile 3x4 -geometry 160x160+3+3! out.png
文本文件名称前面的“@”告诉 IM 从那里读取输入图像。 “-tile”描述了结果中有多少列和行。 “-geometry”设置是您放置图像尺寸以及列和行之间的间距的地方。 “xc:black”图像是单个黑色像素,但感叹号将它们强制转换为“-geometry”参数中的 W 和 H 维度。
这将在列表中包含“xc:black”的所有位置创建黑色图像。如果您还想用黑色填充空格之间,请在命令中添加“-background black”。
这对我来说适用于 IMv7 和“magick montage ...” 对于 IMv6,您只需使用“montage”。我很确定该命令的其他所有内容都会以相同的方式工作。