长度最小的透明 GIF 数据

在网上查了一圈这个问题,结论是比较可靠的版本应该是 43 字节,完全符合标准且能被正确解析。

提供参考的网页主要有:

其中有提到按照标准,可以省略 6 字节的全局颜色表,但是这样可能导致不能被正确解析。

还有很多人声称省略更多部分也能被正确渲染,这种就不考虑了。其中有将 LZW 数据减少到 5 字节以下的尝试,特别查阅了一下,找到了一篇 LZW 过程的讲解,写得不是很好懂不过还是能看懂。根据这篇讲解,符合标准的 LZW 数据不能少于 5 字节。

数据具体的内容可以参考 Nginx 的版本,在代码里有比较完整的注释。数据的 base64 是

1
R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw==

代码注释里面 LZW 的部分一开始没看懂,看了上面那篇讲解才明白应该按小端序来读,01001100 00000001 应该提取出 100 001 101