[Media][Image] 一张图理解Android系统图片格式

参考

  1. 拜耳阵列(Bayer Pattern)简介
  2. 「键摄日常」RYYB与 RGGB之争(上)- 缘起CFA
  3. 「键摄日常」RYYB与RGGB之争(中)RGGB的探索
  4. 「键摄日常」RYYB与RGGB之争(下)RYYB的今生前世
  5. raw图像格式
  6. 对颜色空间YUV、RGB的理解
  7. Android Bitmap(位图)详解
  8. Android Bitmap变迁与原理解析(4.x-8.x)
  9. 图片格式那么多,哪种更适合你?

图片格式简述

[Media][Image] 一张图理解Android系统图片格式_第1张图片

  1. 相机Sensor上按照Bayer Pattern排列着带着不同颜色滤片的光感应像素,用于收集不同波长的光来作为颜色的数据来源。

  2. Sensor出来的是由bayer pattern而来的像素模拟信号转数字信号后简单的raw数据,其中包含了很多噪声或干扰信息,因此需要后续对sensor直接出来的数据进行处理优化,这里的raw图即raw数据,又叫Bayer RGB,RAW RGB,Bayer数据等。

  3. 通过相机的ISP模块,将Raw数据通过demosaic成RGB图格式,比如,CMOS上有400* 500的像素点,这些像素点出来的数据较Raw数据,按照拜耳排列,RAW中每个像素只有一种颜色,通过demosaic,简单点说就是将Raw中一种颜色的像素,根据其周围的一种颜色的像素点猜测该像素对应的其他两个通道的值,将3个通道值作为一个RGB像素信息保存到RGB图片文件中,即,转成的RGB图片中仍是400*500像素点,但RGB中的一个像素点包含着R,G,B三个通道的信息(4通道类似),其他两个通道数据是根据算法猜出来的。

  4. RGB图片出来后需要对RGB像素点进行颜色校正,gamma校正等颜色,亮度校正

  5. 校正过后的RGB数据转为YUV数据格式,YUV也是颜色空间的一种格式,主要靠Y(l亮度)UV(色彩)信息进行存储图片颜色信息。在相机中,对于图片的算法优化,比如美颜,降噪,HDR,景深,多帧处理等都使用了YUV的数据格式。

  6. 当对YUV数据算法处理结束后,即现在图片调整的足够优秀了,需要保存到手机上存储,因此我们需要找一种压缩方式,将原图YUV数据进行压缩,保存到机器上,一般选择JPEG这种有损压缩方式,有损方式大小肯定会变小了,当然在保证最终图片信息完整不影响人眼回看的情况下压缩。

  7. 因此可以将png,jpeg,gif等图片格式看做为压缩之后的文件,因为足够小,存储才多。当用户点开一个jpeg图片时就需要将压缩的图片信息给decode解码出来,当然解码出来的数据大小要比压缩格式的图片文件大小要大了。

  8. Android 中解码出来构造成Bitmap形式使用,因此过大的Bitmap在Android中容易造成OOM或内存紧张问题,Android中可以根据该图片要显示的尺寸采用不同的采样率来构造Bitmap,从而适当减小bitmap占用内存大小,节省内存。

  9. 几种图片比较
    明天补充

你可能感兴趣的:(media)