今天看到一个网页使用了background-image:url("data:image/gif;代码,就进行了分析,随后明白了作用是在使用带有背景图像的透明1x1图像,使用数据URI来减少HTTP请求的数量。
Base64 Encode 1x1px透明GIF图片能干什么?这种图片的特征就是体积最小化,最大限度的减少带宽。而且是透明的,具有隐身作用。用到的场景很多,比如测试浏览器是否支持data URI技术,或用来做一个透明的浮动层,或在lazy load图片时用它来做占位符。
作为标准GIF文件(43字节)的GIF 文件结构解析如下:
Header, 6 bytes: 包含 “GIF” 和所采用标准的版本,如 “GIF89a”.
Logical Screen Descriptor, 7 bytes: 包含文件大小、颜色表(color table)等
Global Color Table, 6 bytes: 对应RGB,每3字节表示一个
Graphic Control Extension, 8 bytes: 指明第二类颜色如何处理,如作为透明、动画参数等
Image Descriptor, 10 bytes: 位置和大小信息,对动画型gif,可以包含多帧信息
Image Data, 5 bytes: LZW 压缩算法的图片数据.
GIF Trailer, 1 byte: 文件结束符,3B
下面就是Base64 Encode 1x1px透明GIF图片的data URI数据,有一天你会用到它们。
最小图片的base64使用代码:
<!---黑-->
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=">
<!---灰--->
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==">
<!---透明--->
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
评论已关闭