在Node.js中使用GM生成动画GIF

Nik*_*lay 6 javascript imagemagick image-processing node.js graphicsmagick

所以我已经解决了这个问题几天,并且在我准备寻求帮助时明白了.

我正在尝试使用graphicsmagic包在基于node.js的应用程序中生成动画gif .

我已经生成了几张看起来像那样的幻灯片

var slides = [];

for (var i=0; i < 10; i++) {
  var slide = gm(200, 200, '#000000')
    .fill('#ffffff')
    .drawText("Slide #"+ i);

  slides.push(slide);
}
Run Code Online (Sandbox Code Playgroud)

我可以将它们转换为流或缓冲区,我可以将它们保存为硬盘上的单个文件,并且有点工作

但我的问题是如何在内存中完全从这些幻灯片中制作动画gif ,而不将各个文件保存在硬盘上?

我看到gm有类似的方法#delay()#page()等在技术上我可以精心像这样的命令

convert -delay 200 -page slide1.gif -page slide2.gif output.gif
Run Code Online (Sandbox Code Playgroud)

我只是不知道如何.我认为它看起来应该是那样的

var end_image = gm(200, 200, '#000000');

end_image.delay(500);

for (var i=0; i < slides.length; i++) {
  slides[i].toBuffer(function(err, buffer) {
    end_image.page(200, 200, ????);
  });
}

end_image.write("output.gif");
Run Code Online (Sandbox Code Playgroud)

基本上我不知道如何将缓冲区转换为参数 gm

有没有人以前做过?也许有另一种方式?

PS:我也尝试使用这个gifencoder包,并成功地将gm缓冲区作为帧输入到gifencoder的API中,但输出都被破坏了.

msc*_*dex 2

gif模块可让您创建静态和动画 gif,这可能会对您有所帮助。