文章23
标签2
分类12

解读常见图像格式

一、图像处理
多数图像的存储格式一般都为字节型(char), 每种图像格式包括很多信息,其中主要还是颜色的存储RGB和RGBA。其中图像存储安照矩阵的方式,如下图:

mmexport1587191639408.png
mmexport1587191636544.png
如果有A通道说明这个图片有透明效果, R、G、B,每个数据使用一字节来表示,所以图(1) 中每个像素大小为 3×8=24位,而图(2)中每个像素大小是 4×8=32位。
图像是二维数据,而在内存中只能一维存储。
二维转一维有2种常用的方式: 按像素 "行排列" 从上往下或从下往上。
不通的图形库中每个像素点中RGBA的排序顺序可能不一样, 上面说过一般有RGB或RGBA 四个分量,
那么在内存中RGB就有多种情况,跟排列组合类似, 不过一般只会有 RGB、BGR、RGBA、BGRA这几种排列,
绝大数图形库或缓解是 BGRBGRA排列。

二、图像压缩
如果图像原始格式直接存储到文件中会很大, 比如一个 8000×8000 24位图,所占文件大小为 8000×8000×3字节=183.1MB,占用空间非常高。
如果使用zip或rar之类的通用算法压缩图像数据, 得到的压缩比不会太高,因为压缩算法没有针对图像数据结构进行特殊处理。
于是就有了jpeg、png等格式,同样是图像压缩算法 jpeg和png也有不同的使用场景。
以下图是图像在内存中的存储方式:
mmexport1587191632130.png
jpeg、png文件相对于图像,就相当于 zip、rar 格式相对于普通文件(用zip、rar 格式对普通文件进行压缩)。
另外bmp是无压缩的图像格式,在这里以Bmp为例,介绍一下Bmp格式的图片存储格式。

三、bmp格式
bmp格式没有压缩像素格式,存储在文件中时先有文件头、再图像头、后面就都是像素数据了,上下颠倒存储。用windows自带的mspaint工具保存bmp格式时,可以发现有四种bmp可供选择:
单色: 一个像素只占一位,要么是0,要么是1,所以只能存储黑白信息
16色位图: 一个像素4位,有16种颜色可选
256色位图: 一个像素8位,有256种颜色可选
24位位图: 就是图(1)所示的位图,颜色可有2^24种可选,对于人眼来说完全足够了。
以下bmp 文件头和图片格式头的结构:
mmexport1587191625662.png
mmexport1587191628051.png

0 评论