简单的bmp读写程序c++版

来源:互联网 发布:app软件著作权申请表 编辑:程序博客网 时间:2024/05/01 06:06

 

#include<fstream>
#include<iostream>
using namespace std;

typedef unsigned char var8;
typedef unsigned int uvar32;
typedef unsigned short int uvar16;
typedef struct {var8 Blue,Green,Red,Reserved; } Palette;

int main()
{
 uvar32Size,Offset,Height,Width,Compress,Reserved,InfoHeaderSize,Colors,ImportantColors,DataSize,HResolution,VResolution;
 uvar16 Planes,Bit;
 int i,j;

 var8 type[2],imdata[256][256];
 Palette Rgbquad;

 ifstream fin;
 fin.open("a3.bmp",ios::binary);
 if(!fin)
 {
  cout<<"Nothis file!\n";
  return 1;
 }
 fin.read((char*)&type,2);
 cout<<"filetype:"<<type[0]<<type[1]<<endl;
 fin.read((char*)&Size,sizeof(uvar32));
 cout<<"filesize:"<<Size<<endl;

 fin.read((char*)&Reserved,sizeof(uvar32));
 cout<<"Reserveddword:"<<Reserved<<endl;
 fin.read((char*)&Offset,sizeof(uvar32));
 cout<<"Offset:"<<Offset<<endl;
 fin.read((char*)&InfoHeaderSize,sizeof(uvar32));
 cout<<"Bitmap InfoHeaderSize:"<<InfoHeaderSize<<endl;
 fin.read((char*)&Width,sizeof(uvar32));
 cout<<"BitmapWidth:"<<Width<<endl;
 fin.read((char*)&Height,sizeof(uvar32));
 cout<<"BitmapHeight:"<<Height<<endl;
 fin.read((char*)&Planes,sizeof(uvar16));
 cout<<"BitmapPlanes:"<<Planes<<endl;
 fin.read((char*)&Bit,sizeof(uvar16));
 cout<<"Bits perPixel:"<<Bit<<endl;
 fin.read((char*)&Compress,sizeof(uvar32));
 cout<<"Compress YorN:"<<Compress<<endl;
 if(Compress) {fin.close();return 2;}
 fin.read((char*)&DataSize,sizeof(uvar32));
 cout<<"DataSize:"<<DataSize<<endl;
 fin.read((char*)&HResolution,sizeof(uvar32));
 cout<<"HResoluton:"<<HResolution<<endl;
 fin.read((char*)&VResolution,sizeof(uvar32));
 cout<<"VResolution:"<<VResolution<<endl;
 fin.read((char*)&Colors,sizeof(uvar32));
 cout<<"Colors:"<<Colors<<endl;
 fin.read((char*)&ImportantColors,sizeof(uvar32));
 cout<<"ImportantColors:"<<ImportantColors<<endl;
 for(i=0;i<256;i++)
 {
  fin.read((char*)&Rgbquad,sizeof(Palette));
  cout<<int(Rgbquad.Blue)<<""<<int(Rgbquad.Green)<<""<<int(Rgbquad.Red)<<""<<int(Rgbquad.Reserved)<<endl;
  
 }
 fin.seekg(Offset,ios::beg);
 for(i=255;i>=0;i--)
 {
  for(j=0;j<256;j++)
  {
   fin.read((char*)&imdata[i][j],sizeof(var8));
  }
 }


 return 0;
}

此时,copy一个bmp格式文件到你的当前工作目录下,调试运行即可!

 

 

0 0
原创粉丝点击