graphicsmagick - 优化蒙太奇和复合的技巧?

时间:2015-12-06 14:53:44

标签: graphicsmagick

对于一个小的照相亭应用程序有这个问题:

我有4张图片,我想用蒙太奇拼贴在一起。结果使用透明PNG和复合获得150px边框。但是因为"框架"比基本图像大,我必须添加一个额外的转换来在平铺图像周围添加人工150px边框。

这是功能性但非常慢,看起来不是很优雅:

gm montage -geometry +20+20 -tile 2x2 /home/pi/dev/*.jpg miff:- | gm convert -border 150x150 miff:- miff:- | gm composite  /home/pi/dev/rahmen.png miff:- /home/pi/dev/partyknipse.JPG

有什么方法可以优化这个并加快这个过程吗?摆脱转换

我猜复合材料的-geometry参数可能很有用,但到目前为止还没有完全理解它。

这大致应该是最终的样子: red border is a png, the four grey boxes are the tiled image

1 个答案:

答案 0 :(得分:0)

不确定您的操作需要多长时间,或者您的期望,但这里有几个想法......

假设我有im1.jpgm4.jpg这是4个小图像和一个更大的红框,它是一个“空心” PNG,中间有一个透明孔。

首先,如果您要切换到ImageMagick(而不是GraphicsMagick),您可以一次性完成所有操作:

convert frame.png -background white -flatten \
    im1.jpg -geometry +80+80   -composite    \
    im2.jpg -geometry +260+80  -composite    \
    im3.jpg -geometry +80+200  -composite    \
    im4.jpg -geometry +260+200 -composite result.png

enter image description here

其次,您可以尝试这样的批处理 GraphicsMagick并在内存中存储中间步骤(MPR = Magick Program Register),这实际上是一个命名的RAM块:

{ echo convert frame.png -background white -flatten mpr:frame; 
  echo montage -geometry +20+20 -tile 2x2 im*.jpg mpr:images; 
  echo composite mpr:images -geometry +100+40  mpr:frame result.png; } | gm batch -prompt off

enter image description here