一、圖像處理
多數圖像的存儲格式一般都為字節型(char), 每種圖像格式包括很多信息,其中主要還是顔色的存儲RGB和RGBA。其中圖像存儲安照矩陣的方式,如下圖:
如果有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也有不同的使用場景。
以下圖是圖像在内存中的存儲方式:
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 文件頭和圖片格式頭的結構:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!