如何使用 nodejs 获取 gif 图像帧的 base64?

Posted

技术标签:

【中文标题】如何使用 nodejs 获取 gif 图像帧的 base64?【英文标题】:How can I get base64 of a gif image frame with nodejs? 【发布时间】:2021-12-05 10:49:42 【问题描述】:

我想从互联网上获取 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 代码。

提前致谢!

【问题讨论】:

【参考方案1】:

由于getImage() 返回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);
);

【讨论】:

以上是关于如何使用 nodejs 获取 gif 图像帧的 base64?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 从 GIF 中提取关键帧

Gif 文件规范 - 帧的注释属性

如何使用nodejs提供图像

怎么让gif格式的图片旋转90度

我正在使用 Giphy API,我想知道如何自动获取 GIF 的图像 URL,而不是手动获取

如何在 JavaScript 中获取 gif 图像的大小