Graphicsmagick 中的合成图像

Posted

技术标签:

【中文标题】Graphicsmagick 中的合成图像【英文标题】:Composite images in Graphicsmagick 【发布时间】:2016-02-16 22:27:54 【问题描述】:

我正在尝试从 API 请求图像并将其“粘贴”到另一个图像之上。在 Photoshop 中,我会将图像粘贴到新图层中,然后合并图层。我可以通过 Graphicsmagick 使用 gm 的 Composite() 来完成此操作。

gm().command("composite")
.in("path/to/topImg.png")
.in("path/to/bottomImg.png")
.toBuffer('PNG', function(err, buffer) 
  if (!err) return buffer;
);

但是,composite 只接受文件路径。因此,假设我想从http://www.google.com 获取徽标。我可以保存图像,在上面的代码中使用它,然后删除它。我正在寻找一种无需先将图像保存到磁盘即可完成此任务的方法。

【问题讨论】:

【参考方案1】:

可以直接使用URL作为图片路径,无需下载保存

gm()
  .command("composite")
  .in("http://someurl...")
  .in("http://someurl...")
  .toBuffer('PNG', function(err, buffer) 
    if (!err) return buffer;
  );

但 GraphicsMagick 使用 libxml2 的 HTTP 支持,目前不支持 HTTPS。因此,如果您想通过 HTTPS 下载图像,则需要外部程序。

【讨论】:

以上是关于Graphicsmagick 中的合成图像的主要内容,如果未能解决你的问题,请参考以下文章

node js使用graphicsmagick调整文件夹中所有图像的大小

在 graphicsmagick 中从远程流创建 GIF

graphicsmagick - 将图像转换为 pdf,反之亦然

GraphicsMagick的介绍和使用

如何使用 GraphicsMagick 从图像中裁剪/调整背景/边框的大小

在 CentOS6 上安装 GraphicsMagick-1.3.30