在网页中嵌入Base64编码文件

大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/ KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/ LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D。那么这是什么呢?这是Data URI scheme。
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了,一张1X36的白灰png图片。
在上面的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 编码和解码的工具,在PHP中可以用函数base64_encode() 进行编码,如echo base64_encode(file_get_contents(‘wg.png’));
目前,IE8、Firfox、Chrome、Opera浏览器都支持这种小文件嵌入。
举个图片的例子:
网页中一张图片可以这样显示:

<img src=“http://www.letuknowit.com/images/wg.png”/>

也可以这样显示:

<imgsrc=“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D”/>

我们把图像文件的内容直接写在了HTML 文件中,这样做的好处是,节省了一个HTTP 请求。坏处呢,就是浏览器不会缓存这种图像。

在线转换为Base64编码网站:

http://www.motobit.com/util/base64-decoder-encoder.asp

http://www.vgot.net/test/image2base64.php

 

作者:白树

出处:http://peunzhang.cnblogs.com/

时间: 2024-10-02 17:18:50

在网页中嵌入Base64编码文件的相关文章

filename-在网页中嵌入windows media player播放器的问题

问题描述 在网页中嵌入windows media player播放器的问题 clsid为22D6F312-B0F6-11D0-94AB-0080C74C7E95,FileName属性设置为通过servlet向java后台请求的连接串(http://ip:port/ServletService?actionParames=go),java后台servlet通过ServletOutputStream将视频文件内容写到前台.每次页面调用wmp播放器的时候,servlet总是向后台请求两次,导致后台直接

本地运行网页中嵌入的Java applet

问题描述 哪位大神帮忙看下,网页中嵌入的Object如下,有没有办法本地通过命令行来运行?另外能修改运行时的codebase地址吗?<objectclassid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"width="300"height="80"codebase="http://java.sun.com/update/1.6.0/jinstall-6u12-windows-i586.

php Base64编码文件二进制流主要使用

Base64编码文件二进制流是使用base64_encode函数对文件二进制信息进行编码. 官方说明 base64_encode - 使用 MIME base64 对数据进行编码 Report a bug 说明 string base64_encode ( string $data ) 使用 base64 对 data 进行编码. 设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体. Base64-encoded 数据要比原始数据多占用 33% 左右的空间.

服务器-关于网页中嵌入视频播放插件的问题

问题描述 关于网页中嵌入视频播放插件的问题 我想知道,在网页中打开别人上传到服务器的资源是直接用本地的播放器打开好,还是在网页中用插件打开好,我上网看了一些插件但是只支持很少的格式,而我又不会转码,谁知道应该怎么解决? 解决方案 可以尝试用html5 转码的话用转码软件 解决方案二: 既然是网页,当然是用网页插件来播放比较好了,调用用户的本地浏览器就有损web开发的优势了,至于转码,推荐用ffmpeg,网上相关资料很多,最好建立一个带转换列表,xml或者数据库都行,写个服务程序调用ffmpeg进

jsp 网站开发-网页中嵌入百度地图的问题

问题描述 网页中嵌入百度地图的问题 在网页中嵌入百度地图 怎样才能通过选择select框下面的值后动态加载百度地图 很着急 在线等 如果有知道的帮忙提个思路 非常感谢! 解决方案 这个很简单,我说下大概思路: 如果你的select框里边是具体的地址,(比如:北京市通州区九棵树)可以通过地图接口把这个汉字传入 如果你的select框里边是经纬度坐标,(比如:19.55555,16.6012555)可以通过地图接口把经纬度坐标传入. 每个地图API都有这二种获取方式的,你可以具体看下API. 解决方

网页中嵌入 Flash 的方法讨论

网页 Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等.讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了. 一.传统的方法.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"    codebase="http://fpdownload.macromedia.com/pub/shockwave

技巧文章:网页中嵌入Flash的方法讨论

技巧|网页 Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等.讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了. 一.传统的方法 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"     codebase="http://fpdownload.macromedia.com/pub/shock

在网页中插入Flv视频文件

Flv视频文件的来源首先说下这个Flash视频,也就是Flash Video. 为什么要用这个?很显然是需要在网页中播放视频.我们都知道一般的视频文件,要不就是asf格式.wmv格式使用mediaplayer进行播放,要不就是rm格式用RealPlayer播放. 这样的问题是,格式的不同就需要选择不同的播放器,这对于本地计算机没有安装相应播放器的用户来说,这些视频根本无法收看. 并且,还由于这些文件的容量过大,下载慢,查看也不很流畅. 所以,解决播放器和容量的问题,运用Flash有个方法:将各类

网页中嵌入Flash的方法讨论_Flash教程

Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等.讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结论就可以了. 一.传统的方法 <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"    codebase="http://fpdownload.macromedia.com/pub/shockwave/ca