<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
其中Android.mk是工程管理檔案,to565.c是來源程式,就是實現原始圖片產生565格式,或者從565格式的圖片產生原始格式。那麼什麼樣的格式叫做原始格式呢?什麼樣的格式叫做565格式呢?為什麼需要使用565格式呢?在我們表達圖片的色彩空間裡,主要使用紅、綠、藍三種顏色,在數字化後,每種顏色採用8位表達,那麼每個點佔用的大小,就是24位,這樣的方式儲存到檔案裡,就是原始格式,因為沒有任何的變換。不過採用這種格式時,檔案會比較大,特別在嵌入系統裡空間特別有限,因此需要轉換為一種在顏色和空間大小佔用都比較合理的方式。而這種方式,就是565的格式,當然這種方式是以損失顏色精度為條件的。在565格式裡,就是紅色佔5位,綠色佔6位,藍色佔5位,剛好16位,採用兩個位元組就可以表達了,這樣比原來每個點少佔用一個位元組。
接著來分析這個程式的代碼,先從main函數開始:
int main(int argc, char **argv)
{
if ((argc == 2) && (!strcmp(argv[1],"-rle"))) {
在這裡判斷輸入的命令列參數是否等於三個,一個命令列參數-rle,這個參數是表示使用遊程編碼壓縮。後面兩個參數,一個是表示檔案輸入,一個是表示檔案輸出。
to_565_rle();
在這裡調用函數 to_565_rle把原始格式轉換為565的格式,並且使用遊程編碼壓縮後,再輸出到檔案裡。
} else {
if (argc > 2 && (!strcmp(argv[1], "-w"))) {
如果超過三個參數,並且有參數為-w,那麼就執行下面的代碼。
to_565_raw_dither(atoi(argv[2]));
這裡調用函數 to_565_raw_dither實現帶抖動演算法的565編碼格式輸出。
} else {
to_565_raw();
這裡調用函數to_565_raw實現原始的565格式輸出。
}
}
return 0;
}