通过Node将.gif文件保存到本地文件系统

时间:2015-11-16 15:12:40

标签: javascript node.js

我正在使用Gifshot生成动画。我正在成功生成一个“文件”。但是,似乎编码已关闭。生成的图像是通过以下代码生成的:

var images = [
  'http://i.imgur.com/2OO33vX.jpg',
  'http://i.imgur.com/qOwVaSN.png',
  'http://i.imgur.com/Vo5mFZJ.gif'
];

var gifshot = require('gifshot');
gifshot.createGIF(
  { 'images':images, 'numFrames': images.length }, 
  function(obj) {
    if (!obj.error) {
      fs.writeFile(
        './animation.gif', obj.image, 'base64', 
        function(err) {
          if (err) {
            alert(err);
          } else {
            alert('Should be all good');
          }
        }
      );                            
    }
  }
);

当上面的代码运行时,animation.gif会生成到我的本地文件系统(它会生成一个108kb的文件)。但是,当我打开它时,动画实际上并不存在。我不确定我做错了什么。我知道Gifshot会返回Base 64图像。我认为这是个问题。所以,我尝试整合找到here的SO答案。但是,这也不起作用。我不确定我做错了什么。非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用模块base64image-to-file

var images = [
  'http://i.imgur.com/2OO33vX.jpg',
  'http://i.imgur.com/qOwVaSN.png',
  'http://i.imgur.com/Vo5mFZJ.gif'
];

var gifshot = require('gifshot');
var base64ImageToFile = require('base64image-to-file'); //// new
gifshot.createGIF(
  { 'images':images, 'numFrames': images.length }, 
  function(obj) {
    if (!obj.error) {
      base64ImageToFile(obj.image, '.', 'animation.gif', //// new
        function(err) {
          if (err) {
            alert(err);
          } else {
            alert('Should be all good');
          }
        }
      );                            
    }
  }
);