1. 程式人生 > >常見圖片格式分析

常見圖片格式分析

一.  影象的基本結構:

1.    在計算機中, 影象是由一個個畫素點組成,畫素點就是顏色點,而顏色最簡單的方式就是用RGB或RGBA表示;


2.    如果有A通道就表明這個影象可以有透明效果;R,G,B每個分量一般是用一個位元組(8位)來表示;

3.    影象是二維資料,資料在記憶體中只能一維儲存,二維轉一維有不同的對應方式;比較常見的只有兩種方式: 按畫素“行排列”從上往下或者從下往上;


(1)  如圖所示的影象有9個畫素點,如果從上往下排列成一維資料是(123456789), 如果是從下往上排列則為(789456123);

(2)  只所以會有這種區別是因為,前一種是以計算機圖形學的螢幕座標系為參考(

左上為原點,y軸向下 ),而後一種是以標準的數學座標系為參考(左下為原點,y軸向上);這兩個座標系只是y值不一樣;

(3)  不過好像只有bmp圖片格式以及windows下的GDI,GDI+是從下往上排列其它比如DirectX,OpenGL,Cocoa(NSImage,UIImage),OpenCV等都是從上往下排列

4.    RGB排列順序:

(1)  不同圖形庫中每個畫素點中RGBA的排序順序可能不一樣;

(2)  排序順序包括:RGBA;RBGA;GRAB;AGBR;BAGR等24種情況;

(3)  不過一般只會有RGB,BGR, RGBA, BGRA這幾種排列據;絕大多數圖形庫或環境是BGR/BGRA

排列;

5.    圖片格式的必要性:

(1)  如果將影象原始格式直接儲存到檔案中將會非常大,比如一個5000*500024點陣圖,所佔檔案大小為5000*5000*3位元組=71.5MB,其大小非常可觀;

(2)  如果用zip或rar之類的通用演算法來壓縮畫素資料,得到的壓縮比例通常不會太高,因為這些壓縮演算法沒有針對影象資料結構進行特殊處理;於是就有了jpeg,png等格式;

(3)  jpeg,png檔案之於影象,就相當於zip,rar格式之於普通檔案;jpeg比較適合儲存色彩“雜亂”的拍攝圖片,png比較適合儲存幾何特徵強的圖形類圖片;