将小文件/图片嵌入html文件中

data:image/jpg;base64

大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:

data:image/jpeg;base64,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
那么这是什么呢?这是Data URI scheme。
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了。
在上面的Data URI中,data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据。
 
目前,Data URI scheme支持的类型有:
data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
 
base64简单地说,它把一些 8-bit 数据翻译成标准 ASCII 字符,网上有很多免费的base64 编码和解码的工具(如: http://base64.xpcha.com/indexie.php),在PHP中可以用函数base64_encode() 进行编码,如 echo base64_encode(file_get_contents(‘1.jpg’));
目前,IE8、Firfox、Chrome、Opera浏览器都支持这种小文件嵌入。
 
举个图片的例子:
网页中一张图片可以这样显示:
<img src="http://i4.bvimg.com/1949/00a51c1dbca912d2.jpg" />

 

也可以这样显示:
<img src="data:image/jpeg;base64,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" />
把图像文件的内容直接写在了HTML 文件中,
这样做的
好处是,节省了一个HTTP 请求。
坏处是,浏览器不会缓存这种图像。
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值