對于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值。