JPEG是目前最常见的图片格式,它诞生于1992年,是一个很古老的格式。它只支持有损压缩,其压缩算法可以精确控制压缩比,以图像质量换得存储空间。由于它太过常见,以至于许多移动设备上课课家CPU都支持针对它的硬编码与硬解码。
PNG诞生在1995年,比JPEG晚几年。它本身的设计目的是替代GIF格式,所以它与GIF有更多相似的地方。PNG只支持无损压缩,所以它的压缩比是有上限的。相对于JPEG和GIF来说,它最大的优势在于支持完整的透明通道。
GIF诞生于1987年,随着初代互联网流行开来。它有很多缺点,比如通常情况下只支持256种颜色、透明通道只有1bit、文件压缩比不高。它唯一的优势就是支持多帧动画,凭借这个特性,它得以从Windows1.0时代流行至今,而且仍然大受欢迎。
在上面这些图片格式诞生后,也有不少公司或团体尝试对他们进行改进,或者创造其他更加优秀的图片格式,比如JPEG小组的JPEG2000、微软的JPEG-XR、Google的WebP、个人开发者发布的BPG、FLIF等。它们相对于老牌的那几个图片格式来说有了很大的进步,但出于各种各样的原因,只有少数几个格式能够流行开来。下面三种就是目前实力比较强的新兴格式了:
APNG是Mozilla在2008年发布的一种图片格式,旨在替换掉画质低劣的GIF动画。它实际上只是相当于PNG格式的一个扩展,所以Mozilla一直想把它合并到PNG标准里面去。然而PNG开发组并没有接受APNG这个扩展,而是一直在推进它自己的MNG动图格式。MNG格式过于复杂以至于并没有什么系统或浏览器支持,而APNG格式由于简单容易实现,目前已经渐渐流行开来。Mozilla自己的Firefox首先支持了APNG,随后苹果的Safari也开始有了支持,Chrome目前也已经尝试开始支持,可以说未来前景很好。
WebP是Google在2010年发布的图片格式,希望以更高的压缩比替代JPEG。它用VP8视频帧内编码作为其算法基础,取得了不错的压缩效果。它支持有损和无损压缩、支持完整的透明通道、也支持多帧动画,并且没有版权问题,是一种非常理想的图片格式。借由Google在网络世界的影响力,WebP在几年的时间内已经得到了广泛的应用。看看你手机里的App:微博、微信、QQ、淘宝、网易新闻等等,每个App里都有WebP的身影。Facebook则更进一步,用WebP来显示聊天界面的贴纸动画。
BPG是著名程序员FabriceBellard在去年(2014年)发布的一款超高压缩比的图片格式。这个程序员有些人可能感觉面生,但说起他的作品FFmpeg、QEMU大家想必是都知道的。BPG使用HEVC(即H.265)帧内编码作为其算法基础,就这点而言,它毋庸置疑是当下最为先进的图片压缩格式。相对于JP2、JPEG-XR、WebP来说,同等体积下BPG能提供更高的图像质量。另外,得益于它本身基于视频编码算法的特性,它能以非常小的文件体积保存多帧动画。FabriceBellard聪明的地方在于,他知道自己一个人无法得到各大浏览器厂商的支持,所以他还特地开发了javascript版的解码器,任何浏览器只要加载了这个76KB大小的JS文件,就可以直接显示BPG格式的图片了。目前阻碍它流行的原因就是HEVC的版权问题和它较长的编码解码时间。尽管这个图片格式才刚刚发布一年,但已经有不少厂子开始试用了,比如阿里和腾讯。
移动端图片类型的支持情况
目前主流的移动端对图片格式的支持情况如何呢?我们分别来看一下Android和iOS目前的图片编解码架构吧:
Android的图片编码解码是由Skia图形库负责的,Skia通过挂接第三方开源库实现了常见的图片格式的编解码支持。目前来说,Android原生支持的格式只有JPEG、PNG、GIF、BMP和WebP(Android4.0加入),在上层能直接调用的编码方式也只有JPEG、PNG、WebP这三种。目前来说Android还不支持直接的动图编解码。
iOS底层是用ImageIO.framework实现的图片编解码。目前iOS原生支持的格式有:JPEG、JPEG2000、PNG、GIF、BMP、ICO、TIFF、PICT,自iOS8.0起,ImageIO又加入了APNG、SVG、RAW格式的支持。在上层,开发者可以直接调用ImageIO对上面这些图片格式进行编码和解码。对于动图来说,开发者可以解码动画GIF和APNG、可以编码动画GIF。
两个平台在导入第三方编解码库时,都多少对他们进行了一些修改,比如Android对libjpeg等进行的调整以更好的控制内存,iOS对libpng进行了修改以支持APNG,并增加了多线程编解码的特性。除此之外,iOS专门针对JPEG的编解码开发了appleJPEG.framework,实现了性能更高的硬编码和硬解码,只有当硬编码解码失败时,libjpeg才会被用到。
上一篇:产品上线前如何搭建团队运营体系
下一篇:Swift模式匹配
¥179.00
¥199.00
¥398.00
¥98.00