对于24位bmp图片,每一个像素点存放着此点的RGB值。首先定义一个结构体,包含红(red)、绿(green)、蓝(blue)这三个字段,如下:
//像素颜色值
typedef struct tagPOINT{
BYTE b;
BYTE g;
BYTE r;
} POINT;
接下来定义用来存放每一像素点RGB值的变量,为了与bmp图像的行、列对应,定义存放数据的变量如下:
POINT **pix;
其中,pix[i][j]代表第i行j列处像素点的RGB值。
根据bmp图像宽与高,为指针变量动态分配内存空间,如下所示:
//为标准图像每一个像素申请内存
pix = (POINT **)malloc(sizeof(POINT*)*bi_in.biHeight);
for(i=0;i
*(pix+i)=(POINT*)malloc(sizeof(POINT)*bi_in.biWidth);
其中,bi_in.biHeight为图像高度,bi_in.biWidth为图像宽度。
读取图像每一像素点处的RGB值至pix变量中,如下:
//读取图像数据
for(i=0;i
for(j=0;j
fread(*(pix+i)+j,sizeof(POINT),1,fi);
现在,pix变量中就存放了整幅图像数据。可以通过下标或者指针运算读取任意点处的RGB值。