【发布时间】:2022-01-20 17:46:17
【问题描述】:
我想使用 ImageMagick 在透明画布上叠加多个不同大小的 PNG 图像。首先我创建一个固定大小的透明画布,比如
convert -size 1500x1000 canvas:transparent PNG32:canvas.png
然后我遍历我的图像以便将每个图像添加到画布
convert canvas.png nthimage.png -gravity Center -geometry xResxYres+xcoord+ycoord -composite canvas.png
这很好用,但我可能会覆盖多达 10 张图片,并且我会为数千个 n 元组的图像执行此操作,因此将不胜感激更快的解决方案。所以我的问题是:我是否也可以一步完成,而不是先创建画布,然后一次添加一个图像?
编辑:我在 macOS 10.15.7 上使用 ImageMagick 7.0.11-13。我从 python 脚本中运行 ImageMagick,因此如果需要,可以生成包含输入文件列表的文件。具体来说,假设我的输入文件是file_1.png 到file_n.png,大小为A1xB1 到AnxBn,并且应该放置在坐标+X1+Y1 到+Xn+Yn 相对于画布的中心和输出文件为 output.png,大小应为 1500x1000。
【问题讨论】:
-
当然。你有一个包含输入图像名称列表的文件吗?并输出图像名称?几行是什么样的?你在运行什么操作系统?您运行的是哪个 IM 版本?
-
@MarkSetchell 感谢您回复我。我已经添加了一些说明。
-
我还是不明白你的问题,抱歉。看起来相当模糊...... “数千个图像的 n 元组” 是什么?一个 n 元组的图像会产生一个输出图像吗?一个 n 元组的图像是什么样的?必须放置图像的 X、Y 坐标在哪里?输出文件名是如何确定的?
-
数千个 n 元组图像我的意思是我想将 n 个图像合并一千次,因此欢迎任何速度改进。让我们举一个具体的例子。画布是
canvas.png,大小为 1500x1000,我有 3 张图像1.png 2.png 3.png,大小为300x200 600x400 900x600,我想将它们放置在相对于画布中心的坐标+100-100 +200-200 +300-300处。假设输出是output.png。我该怎么做? -
如果要合成多个输入图像,可以使用-page +X+Y 代替-geometry,然后使用-flatten。这样您就可以在一个命令行中合成多个图像,而无需使用多个 -composites。见legacy.imagemagick.org/Usage/layers/#flatten
标签: image-processing imagemagick png