这篇文章介绍一款在线的图片 base64 编码利器 —Duri.me。data
URI 图片是 base64编码的图片文件,可以嵌入到 HTML 或者 CSS 文件中,能够减少 HTTP 请求,提高网页加载速速。
Duri.me是一个简单但非常有用的 Web 应用程序,可以快速的在线生成图片文件的data URI。Duri.me使用非常简单,把图片拖放到框内,然后点击
Generate Base-64 Code 按钮就会自动生成编码,Duri.me帮你生成了图片、CSS和Base64字符串三种形式的代码,可以根据自己的需要拷贝生成的内容。
Data URI 简介
data
URIs是由RFC
2397定义,允许将一个小文件进行编码后嵌入到另外一个文档里。data URIs 的语法结构如下:
1
|
data:[<mediatype>][;base64],<data>
|
mediatype
是一种MIME类型字符串, 例如 "image/jpeg
" 代表 JPEG 图像文件。如果省略这个参数,则默认值为text/plain;charset=US-ASCII。
如果数据是文本类型,
你可以直接将文本嵌入在 data: 后面 (根据文本类型以及编码,使用合适的 HTML 实体编码或者百分号编码)。如果是二进制数据,你可以将数据进行 base64 编码之后再进行嵌入。
下面是一些示例:
简单的text/plain类型数据
1
|
data :text /plain;base64,SGVsbG8sIFdvcmxkIQ% 3D % 3D
|
base64编码过的数据
1
|
data :text /html,%3Ch1%3EHello% 2C %20World!% 3C %2Fh1% 3E
|
一个HTML文档源代码<h1>Hello, World</h1>
Firefox中生成data URI 的方法
在 Firefox 浏览器中,将一个 nsIFile 转换为 data URI 的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function generateDataURI(file)
{
var contentType
= Components.classes[ "@mozilla.org/mime;1" ]
.getService(Components.interfaces.nsIMIMEService)
.getTypeFromFile(file);
var inputStream
= Components.classes[ "@mozilla.org/network/file-input-stream;1" ]
.createInstance(Components.interfaces.nsIFileInputStream);
inputStream.init(file,
0x01, 0600, 0);
var stream
= Components.classes[ "@mozilla.org/binaryinputstream;1" ]
.createInstance(Components.interfaces.nsIBinaryInputStream);
stream.setInputStream(inputStream);
var encoded
= btoa(stream.readBytes(stream.available()));
return "data:" +
contentType + ";base64," +
encoded;
}
|
常见问题和兼容性
下文介绍一些在使用data
URIs 时遇到的常见问题:
语法:data URIs 的格式很简单,但很容易会忘记了在 "data:" 协议名后面必须有一个逗号(MIME类型和"base64"都是可省略的),或者在对数据进行 base64 编码时发生错误。
HTML代码格式化:一个data URI 是作为了一个文件内的文件,所以在嵌入其他文档的内部时,这个data URI 所在的行就会非常的长,所以应当用空白符(换行符、制表符、 空格)来对它进行格式化,但如果数据是经过base64编码过的,就可能会遇到一些问题。
长度限制:虽然 Mozilla 支持无限长度的 data URIs,但是标准中并没有规定浏览器必须支持无限长度的 data URIs。比如 Opera 11 限制 data URIs 的长度最多为 65000 个字符。
不支持查询字符串:一个 data URI 的数据字段是没有结束标记的,所以尝试在一个data URI后面添加查询字符串会导致,查询字符串也一并被当作数据字段。例如:
1
|
data :text /html,lots
of text...<p><a name% 3D "bottom" >bottom</a>?arg=val
|
这个data URI代表的HTML源文件内容为:
1
|
lots
of text...<p><a name= "bottom" >bottom</a>?arg=val
|
注意:从Firefox 6开始,data URI 中的锚点标记(#)会像在其他普通网页 URI 上一样可被识别,因此,如果想要表示文件内容中的 "#",必须将它转义为'%23'。
浏览器兼容性:已经支持 data: 协议的浏览器有 Opera 7.20 及其以上版本,Safari 和 Konqueror。Internet Explorer 7 及以下版本不支持,Internet Explorer 8 及以上版本只支持在 CSS 文件中使用 data URIs 格式的图片。
分享到:
相关推荐
.net 图片 base64 编码 Data URI scheme
"name varchar(64),num varchar(64))"; db.execSQL(sql); } /** * @description 当版本更新时触发的方法 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int ...
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core],解决办法:WEB/INF的lib下,除了导入jstl.jar包,还要导入standard.jar包。另外,解压standard.jar包,把.tld文件...
Spring+Jersey+Mybatis小实例,为了搭建这个折腾了两天,其中一天是因为jar包版本引起的,一直报异常:java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/...
HTTP Status 500 - The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
uri-encoding: UTF-8 port: 8080 servlet: context-path: /springbooto2ehg spring: datasource: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/springbooto2ehg?useUnicode...
主要介绍了Data URI scheme详解和使用实例及图片base64编码实现方法,需要的朋友可以参考下
模组npm i --save datauri命令行界面npm i -g datauri-cli使用datauri的工具NPM脚本古尔一个插件,用于将图像转换为嵌入式数据URI。 旨在用作的简单单一用途包装器。RUN 在datauri模块的顶部运行着许多grunt插件。 ...
前端图片压缩base64后台还原图片,后台工具类,前端代码。部分代码来自脚本之家。
URI Differ Simple lib to find diffs between URI and represent it in pretty way. Quick start: Use maven: ru.lanwen.diff uri-differ-lib 1.3.0 Add some code: Get changes: UriDiff changes = ...
免费下载,解压后将tld和lib文件夹放入WEB-INF下面即可,绝对有效立竿见影
资源来自pypi官网。 资源全名:auri-1.3.1.tar.gz
Glide是 Google推荐的图片加载库,它可以支持来自url,Android资源,文件,Uri中的图片加载,同时还支持gif图片的加载,以及各种图片显示前的bitmap处理(例如:圆角图片,圆形图片,高斯模糊,旋转,灰度等等),缓存处理,请求...
NULL 博文链接:https://onestopweb.iteye.com/blog/2379876
将图片自动缩放成指定大小,减少图片体积,从而加快下载速度,降低下载时间和成本。URI 模式 http://localhost/images/pic.jpg_50x100.jpg http://localhost/images/pic.jpg_50x100m2.jpg ...
NULL 博文链接:https://onestopweb.iteye.com/blog/2380036
下载附件URI-1.58.tar.gz即URI:Escape模块,安装, 解压缩文件 tar zxvf URI-1.58.tar.gz 进入解压缩后目录 cd URI-1.58 然后 perl Makefile.PL make make install 安装后 运行正常了 转载请注明来源:...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
高德地图 Uri Api: https://lbs.amap.com/api/uri-api 百度坐标拾取系统: https://api.map.baidu.com/lbsapi/getpoint/ Vanara.PInvoke.Kernel32: https://github.com/dahall/Vanara SharpGIS.NmeaParser: ...