Android培訓班(26) – Android移動開發技術文章_手機開發 Android移動開發教學課程

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>


接著來分析函數 to_565_rle,這個函數主要實現從24位顏色變換為565的16位顏色表示,並且進行行程壓縮編碼,代碼如下:


void to_565_rle(void)


{


unsigned char in[3];


unsigned short last, color, count;


unsigned total = 0;


count = 0;


while(read(0, in, 3) == 3) {


從標準輸入的文件,每次讀取三個字節,如果讀取不夠三個字節,就退出處理。


color = to565(in[0],in[1],in[2]);


每三個字節作為一個像素點,然後通過宏 to565變換為565的16位表示。


下面這段代碼進行遊程編碼,並寫到標準輸出文件裡。


if (count) {


if ((color == last) && (count != 65535)) {


count++;


continue;


} else {


write(1, &count, 2);


write(1, &last, 2);


total += count;


}


}


last = color;


count = 1;


}


下面這段代碼寫入最後一個像素的數據。


if (count) {


write(1, &count, 2);


write(1, &last, 2);


total += count;


}


這裡提示總共處理多少個像素數。


fprintf(stderr,”%d pixels
“,total);


}

發佈留言