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

Posted

技术标签:

【中文标题】graphicsmagick - 优化蒙太奇和合成的技巧?【英文标题】:graphicsmagick - tips for optimizing montage and composite? 【发布时间】:2015-12-06 14:53:44 【问题描述】:

对于一个小小的照相亭申请有这个问题:

我有 4 张图片,我想使用 蒙太奇 将它们拼凑在一起。结果使用透明 PNG 和 composite 获得 150 像素的边框。但因为“框架”比基础图像大,我必须添加一个额外的 convert 以在平铺图像周围添加人工 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

有什么办法可以优化这个并加快流程吗?摆脱convert

我猜复合的-geometry参数可能有用,但目前还没有完全理解。

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

【问题讨论】:

【参考方案1】:

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

假设我有 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

其次,您可以尝试像这样批处理 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

【讨论】:

以上是关于graphicsmagick - 优化蒙太奇和合成的技巧?的主要内容,如果未能解决你的问题,请参考以下文章

Graphicsmagick 中的合成图像

GraphicsMagick的介绍和使用

在 CentOS6 上安装 GraphicsMagick-1.3.30

在空间中拟合对象的算法

ImageMagick 和 GraphicsMagick 有啥区别?

在windows中的imagemagick蒙太奇多个瓷砖