base64编码的图像大小
如果我将图像(jpg或png)转换为base64,那么它会变大,还是会有相同的大小? 会多大?
build议在我的网站上使用base64编码的图像吗?
它将大约大37%:
非常粗略地说,Base64编码二进制数据的最终大小等于原始数据大小的1.37倍
来源: http : //en.wikipedia.org/wiki/Base64
下面是关于什么时候base64编码和什么时候不需要 David Calhoun 的真正有用的概述 。
基本答案 = gzipped base64编码的文件将大致相当于文件大小标准二进制(jpg / png)。 Gzip'd二进制文件将具有较小的文件大小。
外卖 =编码和gzip你的用户界面图标等有一些优势,但不明智的做这个更大的图像。
将图像编码为base64将使其大约大30%。
请参阅维基百科关于数据URIscheme的文章中的详细信息,其中指出:
Base64编码的数据URI的大小是其二进制等同值的1/3。 (但是,如果HTTP服务器使用gzip压缩响应,则此开销降低到2-3%)
在base64中它会更大。
Base64每字节使用6位来编码数据,而二进制使用每字节8位。 而且,Base64还有一点点的填充。 并不是所有的位都与Base64一起使用,因为它首先被开发用于在只能正确处理非二进制数据的系统上编码二进制数据。
这意味着编码后的图像将会大约增加25%,加上填充的常量。
如果你想使用base64编码的图像,它肯定会花费你更多的空间和带宽。 但是,如果您的网站有很多小图像,您可以通过将图像编码为base64并将其放入html中来缩短页面加载时间。 通过这种方式,客户端浏览器不需要与图像进行很多的连接,但是会将它们放在html中。
base64图像的大小
Base64使用64个不同的字符,这是2 ^ 6。 所以base64每8位字符存储6bit。 所以从未转换数据到base64数据的比例是6/8。 这不是确切的计算,而是一个粗略的估计。
例:
一个48kb的图像需要大约64kb的base64转换图像。
计算:(48/6)* 8 = 64
Linux系统上的简单CLI计算器:
$ cat /dev/urandom|head -c 48000|base64|wc -c 64843
或使用图像:
$ cat my.png|base64|wc -c
base64-图像和网站
这个问题更难回答。 一般来说,使用base64的图像越大意义越小。 但是请考虑以下几点:
- HTML文件或CSS文件中的许多embedded式图像可以具有相似的string。 对于PNG,你经常会发现重复的“A”字符。 使用gzip(有时称为“deflate”),甚至可能会赢得大小。 但这取决于图像内容。
- HTTP1.1的请求开销:特别是有很多的cookie,每个请求可以容易地有几千字节的开销。 embeddedbase64图像可能会节省带宽。
- 不要base64编码SVG图像,因为gzip在XML上比在base64上更有效。
- 编程:在dynamic生成的图像上,更容易在一个请求中传递它们以协调两个相关的请求。
- 深层链接:如果你想阻止下载图片,从HTML页面提取图片有点麻烦。
所以答案是:这取决于。