Graphicsmagick 中的合成图像

Composite images in Graphicsmagick

我正在尝试从 API 请求一张图片,然后 "paste" 将其放在另一张图片之上。在 Photoshop 中,我会将图像粘贴到一个新层中,然后合并这些层。我可以使用 gm 的 composite() 使用 Graphicsmagick 完成此操作。

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

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

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

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

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