首页 > 解决方案 > 从 Node.js 中的动画 GIF 获取正确的调色板

问题描述

我想获得动画 GIF 的每一帧的调色板。我在 Node.js 中使用 npm 库 'gif-frames' 将每个帧保存为图像,我的问题是大多数帧的图像都有奇怪的颜色,与打开 GIF 时看到的颜色不同浏览器或在 Photoshop 中。我想这是因为动画 GIF 的压缩方式。我尝试使用 PIL 在 Python 中解决问题,但我遇到了同样的问题。如何获得具有预期颜色的每一帧的图像?

这就是我正在使用的代码

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

gifFrames({ url: 'icontech-2-2019-5.gif', frames: 67 }).then(function (frameData) {
frameData[0].getImage().pipe(fs.createWriteStream('firstframe.jpg'));
});

我在这个文件夹中收集了 2 个示例动画 GIF 和生成的帧https://drive.google.com/drive/folders/154QMzq3IVTMqiKoX_mURNqvUabT89xfw

标签: node.jscolorsgifanimated-gif

解决方案


我发现了问题,我只需要使用 cumulative: true 模块指南中的参数:“将累积指定为 true 将通过将每一帧叠加在前一帧之上来计算每一帧。”


推荐阅读