BMP像素输出问题,急盼佳音!
_葫芦娃 2008-05-03 09:21:09 下面是我的程序代码,要读取BMP文件,现在已经读取了文件头和位图信息头,信息都正确.
接下来我想问的是如何读取位图像素值, 用一个二重循环输出就可以了,因为我好验证.
那位可以帮帮我,我想将像素值读取出来,但是不知道怎么样操作,那位可以在我的程序后加上 代码 补上了?
先行谢过!
// bmp.cpp : Defines the entry point for the console application.
//请把文件位置改掉运行
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <iostream.h>
typedef unsigned short int WORD;
typedef unsigned long int DWORD;
typedef unsigned char BYTE ;
#pragma pack(1)
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER; //定义文件头
typedef struct tagBITMAPINFOHEADER {
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER; //定义为头信息头
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD; //定义颜色数据体,这是为以后输出准备的,也是 需要大家帮忙的
BITMAPFILEHEADER bmfHeader; /*BMP file header*/
BITMAPINFOHEADER bmiHeader; /*BMP info header*/
void main(void)
{
FILE *fp;
int Palette_Num;
int Width,Height, Width_4;
int i, j;
if ((fp=fopen( "F:\\Picture\\View\\11.bmp ", "rb "))==NULL){
cout<< "can not open source file "<<endl;
exit(0);
} //读取文件
fread(&bmfHeader,sizeof(bmfHeader),1,fp);
fread(&bmiHeader,sizeof(bmiHeader),1,fp);
cout<< "File Header: "<<endl; //输出文件头信息
cout<<"bfType= "<<bmfHeader.bfType<<endl;
cout<< "bfSize= "<<bmfHeader.bfSize<<endl;
cout<< "bfOffBits="<<bmfHeader.bfOffBits<<endl;
cout<< endl<<"Information Header: "<<endl; //输出位图信息头信息
cout<< "biSize="<<bmiHeader.biSize<<endl;
cout<< "biWidth="<<bmiHeader.biWidth<<endl;
cout<<"biHeight= "<<bmiHeader.biHeight<<endl;
cout<<"biBitCount="<<bmiHeader.biBitCount<<endl;
cout<< "biClrUsed="<<bmiHeader.biClrUsed<<endl;
getchar();
}