移动开发经常和多媒体数据打交道,对数据的解析往往需要耗费大量资源,属于常见的性能瓶颈。
下面主要介绍一下-图片。它的常见格式、如何在移动平台上被传输、存储和展示,以及优化图片显示性能的方法:强制子线程解码。
存储-0和1的二进制数据
图片格式:将图片以某种规则进行二进制编码的方式,常见格式:JPG、PNG、GIF,还有Webp,BMP,TIFF,CDR等等几十种,属于不同场景或平台。
格式
这些格式分为两大类:有损压缩和无损压缩
有损压缩:相较于颜色,人眼对光线量度更敏感,因此,通过合并图片中的颜色信息,保留亮度信息,可以在尽量不影响图片观感的前提下减少存储体积。这样压缩后的图片将永久损失一些细节,最典型的有损压缩格式是 jpg.
无损压缩:不会损失图片细节,它降低图片体积的方式是通过索引,对图片中不同的颜色特征建立索引表,减少重复的颜色数据,达到压缩的效果。常见无损压缩格式是png,gif.
简单介绍下 webp 和bitmap 两种格式:
webp:jpg作为主流的网络图片标准,可以向上追溯到九十年代初期。谷歌公司推出了webp标准,意图替代jpg,加快网络图片加载速度,提高图片压缩质量。
webp 同时支持有损和无损两种压缩方式,压缩率也很高,无损压缩后的 webp 比 png 少了45%的体积,相同质量的 webp 和 jpg,前者也能节省一半的流量。同时 webp 还支持动图,可谓图片压缩格式的集大成者。
webp 的缺点是浏览器和移动端支持还不是很完善,我们需要引入谷歌的 libwebp 框架,编解码也会消耗相对更多的资源。bitmap:bitmap 又叫位图文件,它是一种*非压缩*的图片格式,所以体积非常大。所谓的非压缩,就是图片每个像素的原始信息在存储器中依次排列,一张典型的1920*1080像素的 bitmap 图片,每个像素由 RGBA 四个字节表示颜色,那么它的体积就是 1920 * 1080 * 4 = 1012.5kb。
由于 bitmap 简单顺序存储图片的像素信息,它可以不经过解码就直接被渲染到 UI 上。实际上,其它格式的图片一般都需要先被首先解码为 bitmap,然后才能渲染到界面上。
网友评论