transparent.gif是37个字节:
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
GIF89a规格
- 标头(6个字节)
由字节" GIF"和版本号组成,通常为
89a
。 逻辑屏幕描述符(7个字节)
无需赘述,文件的此部分指示以下内容:
- 该文件的大小为1x1像素。
- 有一个全局色表。
- 全局颜色表中有2种颜色,第二种颜色应用作背景颜色。
- 全局颜色表(6个字节)
每种颜色包含3个字节,红色,绿色和蓝色分别包含一个字节。在我们的文件中,第一种颜色是白色,第二种颜色是黑色。
- 图形控件扩展(8字节)
用于指示应将颜色表中的第二种颜色视为透明(也可以用于动画参数,但不在此文件中)。
- 图像描述符(10字节)
一个GIF文件实际上可以在其中包含多个"图像",这使您不必为与背景色相同颜色的图像部分指定图像数据。每个图像块在整个图像尺寸内具有位置和尺寸。在上面的文件中,位置为0,0,大小为1x1。
- 图像数据(5字节)
一个LZW编码的图像数据块。它需要5个字节来表示图像中的单个像素。压缩算法的设计并不是很好地压缩单个字节。
- GIF预告片(1个字节)
十六进制值为
3B
(;
ASCII)的单个字节表示GIF的结尾。
根据透明GIF所需的结构,事实证明43字节几乎可以得到。
但是,我设法找出了一个使它变小的方法。标准中提到拥有全局色表是可选的。当然,当您制作完全没有颜色表的GIF时会发生什么还没有定义。
但是,当将颜色表索引定义为透明时,GIF解码器似乎并不关心实际上没有颜色表。
因此,我更改了逻辑屏幕描述符以指示没有全局颜色表,并删除了该表本身,总共节省了六个字节,使文件大小减小到只有37个字节。
有趣的是,尽管Firefox和GIMP都打开并显示(透明时"显示"?),但Wordpress给了我一则可爱的GD错误消息清单,抱怨这不是有效的GIF文件。正好。
为了使其更小,我查看了图像中最大的剩余"可选"块,即图形控件扩展。如果您不需要透明度,则不再需要此块,而这又是8字节,您可以删除。
资料来源:有史以来最细的GIF。
来瞅瞅啦~~~~~