图片dataUrl

1.简介
Data URL给了我们一种很巧妙的将图片“嵌入”到HTML中的方法。跟传统的用img标记将服务器上的图片引用到页面中的方式不一样,在Data URL协议中,图片被转换成base64编码的字符串形式,并存储在URL中,冠以mime-type
图片在网页中的使用方法通常是下面这种利用img标记的形式:

 

这种方式中,img标记的src属性指定了一个远程服务器上的资源。当网页加载到浏览器中时,浏览器会针对每个外部资源都向服务器发送一次拉取资源请求,占用网络资源。大多数的浏览器都有一个并发请求数不能超过4个的限制。这意味着,如果一个网页里嵌入了过多的外部资源,这些请求会导致整个页面的加载延迟。而使用Data URL技术,图片数据以base64字符串格式嵌入到了页面中,与HTML成为一体,它的形式如下:


从上面的base64字符串中你看不出任何跟图片相关的东西,但下面,我们将传统的img写法和现在的Data URL用法左右对比显示,你就能看出它们是完全一样的效果。但实际上它们是不一样的,它们一个是引用了外部资源,一个是使用了Data URL。

几乎所有的现代浏览器都支持Data URL格式,包括火狐浏览器,谷歌浏览器,Safari浏览器,opera浏览器。IE8也支持,但有部分限制,IE9完全支持。

  1. 为什么Data URL是个好东西

Data URL能用在很多场合,跟传统的外部资源引用方式相比,它有如下独到的用处


*当访问外部资源很麻烦或受限时
*当图片是在服务器端用程序动态生成,每个访问用户显示的都不同时。
*当图片的体积太小,占用一个HTTP会话不是很值得时。

Data URL也有一些不适用的场合

*Base64编码的数据体积通常是原数据的体积4/3,也就是Data URL形式的图片会比二进制格式的图片体积大1/3。
*Data URL形式的图片不会被浏览器缓存,这意味着每次访问这样页面时都被下载一次。这是一个使用效率方面的问题——尤其当这个图片被整个网站大量使用的时候。

3.文件头的不同

data:image/gif;base64,
data:image/png;base64,
data:image/jpg;base64,

上述不同的文件头,对应相同的base64数据,一般都是可以解析的,具体原因未知
4.3的问题

你可能感兴趣的:(图片dataUrl)