首页 > 解决方案 > 如何使用 nodejs 获取 gif 图像帧的 base64?

问题描述

我想从互联网上获取 gif 图像的 base64 代码。base64 应该从 gif 图像的第一帧生成。

我可以在nodejs中使用以下代码存储gif图像的第一帧:

var gifFrames = require('gif-frames');
var fs = require('fs');
 
gifFrames({ url: 'https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif', frames: 0 }).then(function (frameData) {
  frameData[0].getImage().pipe(fs.createWriteStream('firstframe.jpg'));
});

我现在需要这个存储的 jpg 图像的 base64 代码。理想情况下,图像不会存储在磁盘上,只打印 base64 代码。

提前致谢!

标签: node.jsbase64framegifanimated-gif

解决方案


由于getImage()返回 a ContentStream,您只需要阅读Buffer并将其转换为 Base64。不知何故像这样:

var gifFrames = require('gif-frames');
var fs = require('fs');

gifFrames({
    url: 'https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif',
    frames: 0
}).then(function (frameData) {
    var stream = frameData[0].getImage(),
    b64 = stream.read().toString('base64');

    console.log(b64);
});

推荐阅读