我想使用命令行在 ImageMagick 中将同一图像多次(最多数千次)叠加在不同的随机位置。
convert -size 800x800 xc:transparent ^
-draw "image over 5,10 0,0 'overlay.png'" ^
-draw "image over 58,23 0,0 'overlay.png'" ^
-draw "image over 701,500 0,0 'overlay.png'" ^
....
PNG64:output.png
或
convert -size 800x800 xc:transparent ^
overlay.png -geometry +0+200 -composite ^
overlay.png -geometry +15+512 -composite ^
overlay.png -geometry +699+20 -composite ^
....
PNG64:output.png
工作得很好!
但是我有一种感觉,ImageMagick 每次都会从磁盘重新加载overlay.png,这对性能来说似乎非常糟糕。
有更好的方法吗?例如,带有“-clone”的东西?
非常感谢任何帮助!
ImageMagick 可以将图像读入命令并将其存储在内存寄存器中,以便在命令运行期间从内存中访问。这是一个简单的例子...
convert overlay.png -write mpr:img0 +delete ^
-size 800x800 xc:transparent ^
-draw "image over 5,10 0,0 mpr:img0" ^
-draw "image over 58,23 0,0 mpr:img0" ^
-draw "image over 701,500 0,0 mpr:img0" ^
....
PNG64:output.png
将覆盖图像读入命令并将其写入名为“img0”的内存寄存器(您可以将其命名为任何您想要的名称),然后将其从活动命令中删除。只要需要,只需引用其名称“mpr:img0”即可将其带回到命令中。