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

3

旧式的计算机图形有时会通过更新调色板而不是纯粹地重绘视频内存来产生动画(周期和淡入淡出)。

在动画gif中是否可以实现这一点?也就是说,通过每个(延迟的)动画帧更新全局调色板中的颜色值,优化(减小文件大小)gif并仅提供单个(显著的)光栅内容帧。

1个回答

4
简短的答案是否定的。
根据现有标准,每个包含本地调色板的GIF帧必须具有自己的数据才能使用该调色板进行显示,否则本地调色板就没有用处。
可能的解决方案之一是定义自己的GIF应用程序扩展块(如网景所做的那样;请参见链接),以存储附加的调色板及其时间延迟。显然,这些扩展块应出现在它们影响数据的帧之后。
这种方法的缺点是,除了您的解码器之外,没有人会支持调色板循环,除非您的块类型以某种方式成为新的事实标准。
尽管如此,您手工制作的GIF对于所有其他GIF解码器仍然有效(即使没有任何调色板循环),因为标准要求它们默默地忽略对它们未知的任何GIF应用程序扩展。

  1. 如果一个单独的GIF帧没有填满整个图像,那么本地调色板是否仍然适用于画布周围的区域?(否则,不可能同时显示超过256种颜色吗?)
  2. 难道没有全局调色板吗?一个单独的帧能改变全局调色板吗?
- benjimin
1
@benjimin [1] 不,每个本地调色板仅属于定义它的帧;是的,有些GIF显示超过256种颜色,请参见此处(https://dev59.com/rhP7s4cB2Jgan1znIzAO#48669313)。[2] 是的,全局调色板可以与本地调色板共存,但是每次出现本地调色板时,本地调色板都具有优先权;帧无论如何都不能影响全局调色板。 - hidefromkgb
更多示例请参见 https://webmasters.stackexchange.com/questions/304/can-i-have-an-animated-gif-with-more-than-256-colours-per-frame/ - benjimin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接