Android培训班(26)

<!-- @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/n",total);

}

posted @ 2010-12-28 23:35  ajuanabc  阅读(148)  评论(0编辑  收藏  举报