【问题标题】:Can animated GIFs do palette shifting?动画 GIF 可以进行调色板转换吗?
【发布时间】:2018-06-19 17:23:21
【问题描述】:

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

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

【问题讨论】:

    标签: optimization gif animated-gif color-palette


    【解决方案1】:

    简短的回答是否定的。

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

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

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

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

    【讨论】:

    • 1.如果一个单独的 GIF 帧没有填满整个图像怎么办:本地调色板是否仍然应用于画布的周围区域? (否则不能同时显示超过256种颜色吗?) 2. 不是也有一个全局调色板吗?单个框架可以更改全局调色板吗?
    • @benjimin [1] 不,它没有,每个本地调色板只属于定义它的框架;是的,有显示超过 256 种颜色的 GIF,see here。 [2] 是的,全局调色板可以与本地调色板共存,但本地人每次出现时优先;框架绝不会影响全局调色板。
    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2014-12-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多