空白图像编码为数据 – uri
我已经构build了一个图像滑块(基于极好的bxSlider ),它将在图像滑入视图之前及时预加载图像。 它工作得很好,但我不认为我的解决scheme是有效的HTML。
我的技术如下:我生成滑块标记,第一张幻灯片<img src="foo.jpg">
照常插入(带有<img src="foo.jpg">
),后面的图像在数据属性中被引用,如<img data-orig="bar.jpg">
。 一个Javascript然后在必要时处理data-orig -> src
改变,触发预加载。
换句话说,我有:
<div class="slider"> <div><img src="time.jpg" /></div> <div><img src="data:" data-orig="fastelavn.jpg" /></div> <div><img src="data:" data-orig="pels_strik.jpg" /></div> <div><img src="data:" data-orig="fashion.jpg" /></div> </div>
为了避免空的src=""
属性(这对 某些浏览器的 性能有害 ),我插入了src="data:"
来有效地插入空白图像作为占位符。
事情是,我似乎无法finddata-URI文档中的任何内容, 说明这是否是有效的数据URI。 我基本上想要最小的数据URIparsing为空白/透明的图像,所以浏览器可以立即解决src和继续前进(没有错误或networking请求)。 也许src="data:image/gif;base64,"
会更好吗?
我仔细研究过, 最小的透明GIF图像 ,编码为数据URI,是这样的:
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
这是我现在使用的。
如果你需要一个透明的图像1×1像素,只需将此数据uri设置为src
默认属性
data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
这是一个base64编码的图像1×1白色
data:image/gif;base64,R0lGODlhAQABAIAAAP7//wAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==
否则你可以设置data:null
,每个图像保存约60个额外的字节
我见过的最小的
数据:图像/ GIF; BASE64,R0lGODlhAQABAAAAACw =
data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=
D:小
data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"/>
有效且高度可压缩。 基本上是免费的,如果在页面中有另一个内联svg。
1px乘1px JPEG图像
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKKKAP/2Q==
Fabrizio的“白色gif”实际上并不完全是白色的:它是rgb(254, 255, 255)
。
我使用了下面这个(碰巧更小),在这个页面上find。
data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=