星联网络专注帝国CMS二次功能插件开发-精品网站模板站长代码素材

  • 最近更新
  • 模板:33
  • 记录:12641|
  • 插件:52|
  • 工具:4|
  • 代码:8|
  • 评论:0

Data URI scheme详解和使用实例及图片base64编码实现

前言

本文重点解决DaaURIscheme详解和使用实例及图片base64编码实现问题,希望能够帮助到你

点评:这篇文章主要介绍了Data URI scheme详解和使用实例及图片base64编码实现方法,需要的朋友可以参考下

一、 Data URI scheme 简介9nsHTML5中文学习网 - HTML5先行者学习网

Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了,一张1X36的白灰png图片。9nsHTML5中文学习网 - HTML5先行者学习网
在上面的Data URI中,data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据。9nsHTML5中文学习网 - HTML5先行者学习网
或许你已经注意到,在有的网页上,图片的 src 或 css 背景图片的 url 并不是我们常见的在线图片链接,而是一大串的字符,比如像这样:9nsHTML5中文学习网 - HTML5先行者学习网

代码如下:data:image/gif;base64,R0lGODlhkQAtAKIAAAAAAP///1a+5zfn9////wAAAAAAAAAAACH5BAEAAAQALAAAAACRAC0AQAP/SLrc/jDKSau9uIrsxN5cAxJeSI5MmV6q4r1w3JKRDC/2W1Mz3/GoVO8UE2GGK+MEVQoKP04XKJqJBj+/DpUVGXgb3vAA/GWIz2EFekxIq8WLcnxNr8sddnd7bUn7v2V/e4BjhIaDg4WJinCBhWdvi5B/j5WIgolvelxCIU5bSRygV1kQOVoySyY0WkqfnKESr7GotDtStzi4OLNSSKgzvxZIpKC6rKKrysNWxstHzs+UjZWPmYbUlpOLbZds1YeU3mjj5OWObF1565Pg7nqQmuzz5PT2m6I3ykXPyzf8+fQd8XfMRItopqiQ0oBslUKEpgp6upJKRMVSEpccHOgi/9eDUVZqdRqGMSJGYR2JQDNWrJWtkR8hpnyZ0Ei0KTJ3meT1ZMqPnC6BlpzZ8VPFHEZt1Cgi7CIRgTGhPkVKVeFIJjUdgqojj52ye/H6iQ0hTh6iPWglzTFXj5u2b+rSxcUDTw6ftXceiBPkhtCcs2XNgutGTc1aTePOuQ3nd9pZCPjMbILzN2/YS265mZEQWfLkvJAjdx5LurTp0xpGoJSlNHXV1kthro4Jk8WpnheRAgN4wuCWhbxaC81I03bvfcSNf1SS+pnVfVAIJme4vDhtnRqnT5WqO3jS7z6Ys7a4lKn26g3FVwnZqVd460QzsnT6dLdH77+IURwqi796/P/ZnYcea/R1d9197wnoy08JwobfbMXsR5NUTyTkoC/0yZeeScONUgoTPag2HDIjJtdSgLO5NGB8x8WHxXj9bZhMSS++lGJsKqoEowoh9qhDQTdmpV6N2PGEHI4YXugfagEdxJtFr1FFwV1d2SENZZKYw+SWZIBFB15y/QWml1/OM6VdoGVywV7tvFWll2g14s2bZIZJJ5wTsJlYnOggpiY2jMiJyTt8vmVJN36iadafaXqWZaHWFMYHm435cQ1c9TBmaJlWHrJnaIYWGklf1iAWiGCZFZbWZImV9Y2mc4rWqKmwUsonYLVWQ5iqr1IGqK+5hjpNr2fWmWmWXA32jrEFzJL5QAIAOw==9nsHTML5中文学习网 - HTML5先行者学习网

9nsHTML5中文学习网 - HTML5先行者学习网
这是什么呢?这就是程序员学习网今天要介绍的 Data URI scheme。9nsHTML5中文学习网 - HTML5先行者学习网

9nsHTML5中文学习网 - HTML5先行者学习网
目前,Data URI scheme支持的类型有:9nsHTML5中文学习网 - HTML5先行者学习网

代码如下:9nsHTML5中文学习网 - HTML5先行者学习网
data:,文本数据9nsHTML5中文学习网 - HTML5先行者学习网
data:text/plain,文本数据9nsHTML5中文学习网 - HTML5先行者学习网
data:text/html,HTML代码9nsHTML5中文学习网 - HTML5先行者学习网
data:text/html;base64,base64编码的HTML代码9nsHTML5中文学习网 - HTML5先行者学习网
data:text/css,CSS代码9nsHTML5中文学习网 - HTML5先行者学习网
data:text/css;base64,base64编码的CSS代码9nsHTML5中文学习网 - HTML5先行者学习网
data:text/javascript,Javascript代码9nsHTML5中文学习网 - HTML5先行者学习网
data:text/javascript;base64,base64编码的Javascript代码9nsHTML5中文学习网 - HTML5先行者学习网
data:image/gif;base64,base64编码的gif图片数据9nsHTML5中文学习网 - HTML5先行者学习网
data:image/png;base64,base64编码的png图片数据9nsHTML5中文学习网 - HTML5先行者学习网
data:image/jpeg;base64,base64编码的jpeg图片数据9nsHTML5中文学习网 - HTML5先行者学习网
data:image/x-icon;base64,base64编码的icon图片数据9nsHTML5中文学习网 - HTML5先行者学习网
base64简单地说,它把一些 8-bit 数据翻译成标准 ASCII 字符,在PHP中可以用函数base64_encode() 进行编码。9nsHTML5中文学习网 - HTML5先行者学习网
目前,IE8、Firfox、Chrome、Opera浏览器都支持这种小文件嵌入。对于 IE7 及之前版本,可通过使用MHTML 解决 data URI scheme 的兼容问题。9nsHTML5中文学习网 - HTML5先行者学习网

9nsHTML5中文学习网 - HTML5先行者学习网
举例说明9nsHTML5中文学习网 - HTML5先行者学习网
9nsHTML5中文学习网 - HTML5先行者学习网
网页中一张图片可以这样显示:9nsHTML5中文学习网 - HTML5先行者学习网

代码如下:<img src=”http://www./images/logo.png”/>9nsHTML5中文学习网 - HTML5先行者学习网
也可以这样显示:9nsHTML5中文学习网 - HTML5先行者学习网

代码如下:<img src=“data:image/gif;base64,R0lGODlhkQAtAKIAAAAAAP///1a+5zfn9////wAAAAAAAAAAACH5BAEAAAQALAAAAACRAC0AQAP/SLrc/jDKSau9uIrsxN5cAxJeSI5MmV6q4r1w3JKRDC/2W1Mz3/GoVO8UE2GGK+MEVQoKP04XKJqJBj+/DpUVGXgb3vAA/GWIz2EFekxIq8WLcnxNr8sddnd7bUn7v2V/e4BjhIaDg4WJinCBhWdvi5B/j5WIgolvelxCIU5bSRygV1kQOVoySyY0WkqfnKESr7GotDtStzi4OLNSSKgzvxZIpKC6rKKrysNWxstHzs+UjZWPmYbUlpOLbZds1YeU3mjj5OWObF1565Pg7nqQmuzz5PT2m6I3ykXPyzf8+fQd8XfMRItopqiQ0oBslUKEpgp6upJKRMVSEpccHOgi/9eDUVZqdRqGMSJGYR2JQDNWrJWtkR8hpnyZ0Ei0KTJ3meT1ZMqPnC6BlpzZ8VPFHEZt1Cgi7CIRgTGhPkVKVeFIJjUdgqojj52ye/H6iQ0hTh6iPWglzTFXj5u2b+rSxcUDTw6ftXceiBPkhtCcs2XNgutGTc1aTePOuQ3nd9pZCPjMbILzN2/YS265mZEQWfLkvJAjdx5LurTp0xpGoJSlNHXV1kthro4Jk8WpnheRAgN4wuCWhbxaC81I03bvfcSNf1SS+pnVfVAIJme4vDhtnRqnT5WqO3jS7z6Ys7a4lKn26g3FVwnZqVd460QzsnT6dLdH77+IURwqi796/P/ZnYcea/R1d9197wnoy08JwobfbMXsR5NUTyTkoC/0yZeeScONUgoTPag2HDIjJtdSgLO5NGB8x8WHxXj9bZhMSS++lGJsKqoEowoh9qhDQTdmpV6N2PGEHI4YXugfagEdxJtFr1FFwV1d2SENZZKYw+SWZIBFB15y/QWml1/OM6VdoGVywV7tvFWll2g14s2bZIZJJ5wTsJlYnOggpiY2jMiJyTt8vmVJN36iadafaXqWZaHWFMYHm435cQ1c9TBmaJlWHrJnaIYWGklf1iAWiGCZFZbWZImV9Y2mc4rWqKmwUsonYLVWQ5iqr1IGqK+5hjpNr2fWmWmWXA32jrEFzJL5QAIAOw==”/>9nsHTML5中文学习网 - HTML5先行者学习网

我们把图像文件的内容直接写在了HTML 文件中,这样做的好处是,节省了一个HTTP 请求使得加载速度得以提升,坏处则可能导致浏览器不会缓存这种图像。9nsHTML5中文学习网 - HTML5先行者学习网

二、图片 base64 编码的实现方法示例9nsHTML5中文学习网 - HTML5先行者学习网

2.1 JS实现图片 base64 编码代码9nsHTML5中文学习网 - HTML5先行者学习网

代码如下:9nsHTML5中文学习网 - HTML5先行者学习网
function readFile(){9nsHTML5中文学习网 - HTML5先行者学习网
var file = this.files[0];9nsHTML5中文学习网 - HTML5先行者学习网
if(!/image///w+/.test(file.type)){9nsHTML5中文学习网 - HTML5先行者学习网
alert("请确保文件为图像类型");9nsHTML5中文学习网 - HTML5先行者学习网
return false;9nsHTML5中文学习网 - HTML5先行者学习网
}9nsHTML5中文学习网 - HTML5先行者学习网
var reader = new FileReader();9nsHTML5中文学习网 - HTML5先行者学习网
reader.readAsDataURL(file);9nsHTML5中文学习网 - HTML5先行者学习网
reader.onload = function(e){9nsHTML5中文学习网 - HTML5先行者学习网
result.innerHTML = '<img src="'+this.result+'" alt=""/>';9nsHTML5中文学习网 - HTML5先行者学习网
img_area.innerHTML = '<div class="sitetip">图片img标签展示:</div><img src="'+this.result+'" alt=""/>';9nsHTML5中文学习网 - HTML5先行者学习网
}9nsHTML5中文学习网 - HTML5先行者学习网
}9nsHTML5中文学习网 - HTML5先行者学习网
9nsHTML5中文学习网 - HTML5先行者学习网

2.2 利用 HTML5 的 FileReader 实现图片 base64 编码9nsHTML5中文学习网 - HTML5先行者学习网

HTML5 Javascript 版本核心代码:9nsHTML5中文学习网 - HTML5先行者学习网


代码如下:9nsHTML5中文学习网 - HTML5先行者学习网
function readFile(){9nsHTML5中文学习网 - HTML5先行者学习网
var file = this.files[0];9nsHTML5中文学习网 - HTML5先行者学习网
if(!/image///w+/.test(file.type)){9nsHTML5中文学习网 - HTML5先行者学习网
alert("请确保文件为图像类型");9nsHTML5中文学习网 - HTML5先行者学习网
return false;9nsHTML5中文学习网 - HTML5先行者学习网
}9nsHTML5中文学习网 - HTML5先行者学习网
var reader = new FileReader();9nsHTML5中文学习网 - HTML5先行者学习网
reader.readAsDataURL(file);9nsHTML5中文学习网 - HTML5先行者学习网
reader.onload = function(e){9nsHTML5中文学习网 - HTML5先行者学习网
result.innerHTML = '<img src="'+this.result+'" alt=""/>';9nsHTML5中文学习网 - HTML5先行者学习网
img_area.innerHTML = '<div class="sitetip">图片img标签展示:</div><img src="'+this.result+'" alt=""/>';9nsHTML5中文学习网 - HTML5先行者学习网
}9nsHTML5中文学习网 - HTML5先行者学习网
}9nsHTML5中文学习网 - HTML5先行者学习网
9nsHTML5中文学习网 - HTML5先行者学习网

9nsHTML5中文学习网 - HTML5先行者学习网

本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。

本文地址:http://www.xlkjgs.com/notes/html/3563.html

以上内容由本站整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

星联网络

星联网络是中国最具实战的互联网创业者的知识服务商,这里有互联网行业动态,网络推广,SEO优化,SEM优化,ESC配置,行业经验分型,互联网项目,微信营销、淘宝客赚钱、新媒体营销、京东运营、跨境电商等众多互联网营销知识分享

站长运营站长必备网站运营之道才能长久发展