二十四位位图每一行的图素数等于该结构的bcwidth字段。每一行从最左边的图素开始,直到图像的右边。分别对应的b,g,r像素。每个像素占8位, 每列的宽度为bcwidth,必须为4的倍数,不足的用零填充。
下面是读取二十四位位图的关键代码:
代码
1 bitmapfileheader * pbmfh ;
2 bitmapinfo * pbmi ;
3 byte * pbits ;
4 pbmfh = dibloadimage (szfilename) ;
5 pbmi = (bitmapinfo *) (pbmfh + 1) ;
6 pbits = (byte *) pbmfh + pbmfh->bfoffbits ;
7 for( i=0; i < 1024; i++)
8 {
9 pprintblock[i] = (char*)malloc(216);
10 memset(pprintblock[i], 0, 216);
11 }
12
13 for(h = 0; h < pbmi->bmiheader.biheight; h++)
14 {
15 for(w = 0; w < pbmi->bmiheader.biwidth; w++)
16 {
17 b1 = *pbits; //b
18 b2 = *(pbits+1); //g
19 b3 = *(pbits+2); //r
20 if( (int)b1 != 255 && (int)b2 != 255 && (int)b3 != 255)
21 {
22 index = w / 8;
23 index = 1 << (w%8);
24 index = pprintblock[h][w / 8] | ( 1 << (w%8) );
25 pprintblock[h][w / 8] = pprintblock[h][w / 8] | ( 1 << (w%8) );
26 }
27 pbits += 3;
28
29 }
30 if(pbmi->bmiheader.biwidth *3 % 4 != 0)
31 {
32 pbits += ( 4 - pbmi->bmiheader.biwidth*3 % 4);
33 }
34 }
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|