base64编码的图像大小

时间:2012-07-09 20:10:11

标签: html css image base64

如果我将图像(jpg或png)转换为base64,那么它会更大,还是会有相同的大小?它会变得多大?

是否建议在我的网站上使用base64编码图像?

7 个答案:

答案 0 :(得分:107)

它将增加约37%:

  

非常粗略地说,Base64编码的二进制数据的最终大小等于原始数据大小的1.37倍

来源:http://en.wikipedia.org/wiki/Base64

答案 1 :(得分:12)

这是David Calhoun的a really helpful overview of when to base64 encode and when not to

基本答案 = gzipped base64编码文件的文件大小与标准二进制文件(jpg / png)大致相当。 Gzip的二进制文件将具有较小的文件大小。

外卖 =编码和压缩您的UI图标等有一些优势,但对于较大的图片,这是不明智的。

答案 2 :(得分:6)

它将在base64中更大。

Base64每字节使用6位来编码数据,而二进制每字节使用8位。此外,Base64还有一些填充开销。并非所有位都与Base64一起使用,因为它是首先开发的,用于在只能正确处理非二进制数据的系统上编码二进制数据。

这意味着编码图像将大约增加25%,加上填充的常量开销。

答案 3 :(得分:5)

将图像编码到base64将使其大约增加30%。

请参阅维基百科文章中有关Data URI scheme的详细信息,其中包含:

  

Base64编码数据URI的大小比其二进制等值大1/3。 (但是,如果HTTP服务器使用gzip压缩响应,则此开销减少到2-3%)

答案 4 :(得分:4)

base64-images的大小

Base64使用64个不同的字符,这是2 ^ 6。因此base64存储每8位字符6位。因此从未转换数据到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-images和网站

这个问题要难得多回答。一般来说,使用base64感觉图像越大。但请考虑以下几点:

  • HTML-File或CSS-File中的许多嵌入图像可以具有类似的字符串。对于PNG,您经常会发现重复的“A”字符。使用gzip(有时称为“deflate”),甚至可能在大小上获胜。但这取决于图像内容。
  • HTTP1.1的请求开销:特别是对于大量的cookie,您可以轻松地为每个请求提供几千字节的开销。嵌入base64图像可能会节省带宽。
  • 不要对64位SVG图像进行编码,因为gzip在XML上比在base64上更有效。
  • 编程:在动态生成的图像上,更容易在一个请求中传递它们以协调两个相关请求。
  • 深层链接:如果您想阻止下载图片,从HTML页面中提取图片会有点棘手。

所以答案是:这取决于。

答案 5 :(得分:2)

肯定会花费你更多的空间和空间。带宽如果要使用base64编码的图像。但是,如果您的网站有很多小图片,您可以通过将图像编码为base64并将它们放入html来减少页面加载时间。通过这种方式,客户端浏览器不需要与图像建立很多连接,但是会以html形式显示它们。

答案 6 :(得分:0)

转换为 base64 的意思很简单:

解析二进制数据,以 6 位的块读取,然后将其转换为某种表示

注意:一切都只是二进制数据。所有的字符串、数字等都只是你记忆中的二进制数据。 您如何阅读以及您将阅读内容映射到什么是我们所做的一切。

这个6位的序列有一个表示标准(如下图),由Base64定义

enter image description here

如果传入流是 000000 -> A, 000001 -> B,依此类推。

现在字符本身的表示需要8 位。因此,您的数据大小已增加到原始值的 4/3,因为您现在每个字符多占用 2 位。