base64编码的图像大小

Dan*_*Fox 81 html css base64 image

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

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

Ble*_*der 118

它将增加约37%:

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

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

  • 不大于137%,原始尺寸的137%:-)大37%(根据您的来源). (25认同)
  • 我会说这几乎是原始尺寸的4/3. (3认同)
  • @Blender但在我的情况下,当我将70kb位图转换为字符串时,它变为500kb.Its不是37%.我已将5mb图像压缩为70kb,然后将该压缩图像转换为500kb的字符串. (2认同)

小智 12

这是一个非常有用的概述,何时进行base64编码,何时不进行 David Calhoun.

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

Takeaway =编码和gzipping你的UI图标等有一些优势,但对于较大的图像这样做是不明智的.


Eri*_* J. 10

它将在base64中更大.

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

这意味着编码图像将大约增加25%,加上填充的持续开销.

  • @ishahak 是的,已更正。我确实对已接受的答案发表了评论,并且应该仔细检查我自己的答案。 (2认同)

Ode*_*ded 5

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

请参阅维基百科文章中有关数据URI方案的详细信息,其中指出:

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


Tre*_*her 5

base64图像的大小

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
Run Code Online (Sandbox Code Playgroud)

或使用图片:

$ cat my.png|base64|wc -c
Run Code Online (Sandbox Code Playgroud)

base64图片和网站

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

  • HTML文件或CSS文件中的许多嵌入式图像可以具有相似的字符串。对于PNG,您经常会发现重复的“ A”字符。使用gzip(有时称为“放气”),甚至可能在尺寸上胜出。但这取决于图像内容。
  • HTTP1.1的请求开销:尤其是使用很多cookie时,每个请求的开销很容易达到几千字节。嵌入base64图像可能会节省带宽。
  • 不要对SVG图像进行base64编码,因为gzip在XML上比在base64上更有效。
  • 编程:在动态生成的图像上,更容易在一个请求中交付它们以协调两个从属请求。
  • 深度链接:如果要防止下载图像,则从HTML页面提取图像会有些棘手。

因此答案是:这取决于。