Base64 编码图片,为什么会让数据量变大?

3 阅读1分钟

Base64 编码

Base64 编码是采用 64 个基本的 ASCII 码字符,对数据重新编码。 把 3 个 8 位的字节(3 * 8 = 24)转化为 4 个 6 位的字节(4 * 6 = 24),并在 6 位的前面补两个 0 ,形成 8 位一个字节的形式。如果剩下的字符不足 3 个字节,则用 0 填充,输出字符使用 ‘=’,因此编码后输出的文本末尾可能会出现 1 或 2 个 ‘=’。

从以上编码规则可以得知,通过 Base64 编码,原来的 3 个字节编码后成为 4 个字节,即字节增加了 33.3%,数据量相应变大。所以 20M 的数据通过 Base64 编码后大小改为 20M*133.3%=26.67M。

用Base64的来呈现图片的有什么优势呢?

  • 减少 http 网络请求:

    网页上的图片资源如果采用 http 形式的 url 的话都会额外发送一次请求,网页发送的 http 请求次数越多,会造成页面加载速度越慢。而采用 Base64 格式的编码,将图片转化为字符串后,图片文件会随着 html 元素一并加载,这样就可以减少 http 请求的次数,对于网页优化是一种比较好的手段。

  • 不会造成跨域请求的问题。

  • 没有图片更新要重新上传,不会造成清理图片缓存的问题。

不足之处

增加了CSS文件的尺寸造成数据库数据量的增大IE6、IE7并不支持