如何使用Node.js获取GIF图片第一帧的Base64编码
你可以通过收集gif-frames返回的图片流数据,拼接为Buffer后直接转Base64编码,无需写入磁盘,实现代码如下:
const gifFrames = require('gif-frames'); gifFrames({ url: 'https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif', frames: 0 }) .then(function (frameData) { const chunks = []; const imageStream = frameData[0].getImage(); // 收集流的所有数据块 imageStream.on('data', (chunk) => chunks.push(chunk)); // 流读取完成后转Base64 imageStream.on('end', () => { const buffer = Buffer.concat(chunks); // 纯Base64编码 const base64 = buffer.toString('base64'); console.log(base64); // 如果需要用于图片标签的Data URI格式,用下面这行 // const dataUri = `data:image/jpeg;base64,${base64}`; }); // 监听流错误 imageStream.on('error', (err) => { console.error('读取图片流失败:', err); }); });
- 上述代码直接在内存中处理图片流,不会产生本地临时文件
- 若获取到的Base64需要直接在前端图片标签中渲染,可拼接
data:image/jpeg;base64,前缀使用
内容的提问来源于stack exchange,提问作者Patrik
相关产品推荐
相关产品推荐

