组合两个gm对象,同时在GraphicsMagick中为NodeJS调整其中一个对象

时间:2014-12-03 17:33:05

标签: node.js graphicsmagick

 var image = gm(someImageUrl)
 .resize(100,100);

 var drawings = gm(200,200,'red')
 .fill('blue')
 .drawRectangle(20,20,40,40);

 // Would be great to have sth like this. 
 drawings.drawImage(image, position)
 // or
 drawings.add(image, position)
 // or
 drawings.draw(image, position)

附加不是一个选项,因为我希望它们重叠并为图像设置精确位置

1 个答案:

答案 0 :(得分:2)

这可以通过在 gm()的对象上使用合成选项(即 command() in()函数来实现。返回),它们本质上是你传递给shell的选项标志。

例如:

gm()
.command("composite") 
.in("-gravity", "center")
.in(change_image_url)
.in(base_image_url)
.write(out_file, function (e) {
  if (!e) {
    console.log('this worked');
  } else {
    console.log(err);
  }
});

但是,需要注意的是,流和缓冲区无法利用它们,因为命令行选项需要原始文件输入。如果您希望输入网址,这可能适用于您的情况。

尝试查看node-canvas的实际绘图功能。您可以添加图像对象,然后使用createPngStream创建Graphics Magick可以读取的流,用于任何最后编辑/消除​​锯齿的大小调整。

相关问题