【问题标题】:Save .gif to local file system via Node通过 Node 将 .gif 保存到本地文件系统
【发布时间】:2015-11-19 19:19:26
【问题描述】:

我正在使用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答案。然而,这也没有奏效。我不确定我做错了什么。非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 当您说“动画实际上并不存在”时,您的意思是它没有动画(即停留在第一帧)还是根本无法打开图像?
  • 您的代码看起来像是 node.js 和浏览器代码的混合体(node 中没有 alert,浏览器中也没有 fs.writeFilerequire)。我不认为 gifshot 目前在节点中工作。这是一个仅限浏览器的库。它可以使用node-canvas,但据我所知,它是does not work with it。如果我登录 obj.errorMsg,我会收到“您的浏览器不支持画布元素”。

标签: javascript node.js


【解决方案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');
          }
        }
      );                            
    }
  }
);

【讨论】:

  • 非常感谢。有很多包和代码示例,有时很难知道哪个是正确的。你的例子正是我所需要的。谢谢你指点我base64image-to-file的方向。
  • 不客气。我发现在 node-modules.com 上搜索非常适合找到这样的解决方案。在这种情况下,查询是“base64 文件”
  • 这个解决方案不再适合我。有什么改变吗?我显然在 Node 上使用 npmjs.com/package/gifshotnpmjs.com/package/base64image-to-file
猜你喜欢
  • 2017-03-06
  • 1970-01-01
  • 2013-02-03
  • 2013-08-19
  • 2015-09-23
  • 2011-01-29
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多