合并两个gm对象,同时在graphicsJagick中为NodeJS调整其中的一个

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) 

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

这可以通过使用合成选项(即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); } }); 

但是,需要注意的是stream和缓冲区不能利用它们,因为命令行选项需要原始文件input。 如果你想提供url,这可能适用于你的情况。

尝试查看实际绘图function的节点canvas 。 您可以添加图像对象,然后使用createPngStream创buildGraphics Magick可以读取的stream,以进行任何最后一刻的编辑/消除​​锯齿调整。