动画 GIF 可以进行调色板转换吗?

Can animated GIFs do palette shifting?

老式计算机图形有时会产生动画(循环和淡入淡出),而不会真正将任何内容重新绘制到显存中,完全是 updating the color palette

是否可以在动画 gif 中执行此操作?也就是说,通过仅提供一帧(重要的)光栅内容来优化(减少文件大小)gif,但让每个(延迟的)动画帧更新(全局)调色板中的颜色值?

简短的回答是否定的。

根据现有标准,每个包含本地调色板的 GIF 帧都必须有自己的数据才能使用该调色板显示,否则本地调色板没有用。

一种可能的解决方案是定义您自己的 GIF Application Extension 块(就像 Netscape 那样;参见 link)来存储额外的调色板及其时间延迟。显然,那些扩展块应该出现在它们影响数据的帧之后。

这种方法的缺点是,除了您的解码器,没有人会支持调色板循环,除非您的块类型以某种方式成为新的事实上的标准。

然而,您手工制作的 GIF 对所有其他 GIF 解码器仍然有效(即使没有任何调色板循环),因为标准要求它们默默地忽略 ID 未知的任何 GIF 应用程序扩展。