美文网首页
图片编码处理原因

图片编码处理原因

作者: MYSUNFLOWER | 来源:发表于2019-09-25 14:35 被阅读0次

1.为什么用base64对字符进行编码?

在一定范围内,base64解析速度更快。

使用 Base64 的好处是能够减少一个图片的 HTTP 请求,然而,与之同时付出的代价则是 CSS 文件体积的增大。

Base64 跟 CSS 混在一起,大大增加了浏览器需要解析CSS树的耗时。其实解析CSS树的过程是很快的,一般在几十微妙到几毫秒之间。

       文件大小是2KB,其实是2×1024byte,也就是2048字节,也就是2048个8位二进制序列,按照ASCII转换的话,就是2048个字符,也就是类似SaqeqWEQwQ871...这个的2048个字符。

       采用base64算法将其转换成base64格式后,这个图片会转换成2048×8/6==2734,即2734个6位二进制序列,按照Base64表转换的话,就是2048个字符,也就是类psadSaqeqWEQ1231171...这个的2734个字符。

        从数据库思维去思考,从一张256索引表中查找2048个字符串,与从64索引表中查找2734个字符串,哪个成本更低一点,显然256×2048远大于64×2734。

base64编码就是把256位的字符,采用base64算法,编码成64位算法,前者是2的8次方,后者是2的6次方,因此前者的一个字符是8位二进制码,后者是6位二进制码,前者从ASCII码表中匹配,后者从base64位表中匹配。

base64的应用场景:

无额外请求;对于极小或者极简单图片;可像单独图片一样使用,比如背景图片重复使用等;没有跨域问题,无需考虑缓存、文件头或者cookies问题

       128个字符中的一些是不可打印的(主要是那些位于代码点0x20之下的字符)。因此,它们不能被可靠地以线的方式传输。而且,如果你去上面的代码点128,你可能会遇到编码问题,因为在系统之间使用不同的编码。

  因为Base64编码 比十六进制编码更节省磁盘容量,所以一般较大的数据需要进行 ASCII 编码多采用 Base64;而较小的数据,则使用易于人工识别十六进制(用纸笔就能解码出来)。

使用 Base64 的好处是能够减少一个图片的 HTTP 请求,然而,与之同时付出的代价则是 CSS 文件体积的增大。

CRP(Critical Rendering Path,关键渲染路径):当浏览器从服务器接收到一个HTML页面的请求时,到屏幕上渲染出来要经过很多个步骤。浏览器完成这一系列的运行,或者说渲染出来我们常常称之为“关键渲染路径”。

canvas.toDataURL('image/webp',quality);

toDataURL是用base64对图像进行编码的,且编码后的源文件比编码前大33%,但是quality参数可以指定压缩质量,压缩质量越接近于0,图片压缩力度越大。

转自:https://www.jianshu.com/p/63e909109d67

相关文章

网友评论

      本文标题:图片编码处理原因

      本文链接:https://www.haomeiwen.com/subject/eqlbuctx.html