#include <iostream>
#include <fstream>
#include <windows.h>
#define WORD short int
#define DWORD long int
#define LONG long int
using namespace std;
char *File1_Name ="0001.bmp";
BITMAPFILEHEADER File1_F;
BITMAPINFOHEADER File1_I;
RGBQUAD File1_rgb[256];
byte *File1_pixel;
char *File3_Name = "0003.bmp";
byte *File3_pixel;
//-------主程式-----------------------------------------------------------------------------
int main()
{
fstream file;
int i,j,Size,Width,Height;
char PIXEL[128][128],temp[128][128];
////////////////////////////////////////////////////
//1. 影像matrix讀進來: *pixel 的大小為 (I.biWidth)X(I.biHeight)
// 請你動態的new空間出來
////////////////////////////////////////////////////
file.open(File1_Name,std::ios::in|std::ios::binary);
if(!file)
{
cout<<"open fail.\n";
return 1;
}
file.read((char*)&File1_F, sizeof(BITMAPFILEHEADER));
file.read((char*)&File1_I, sizeof(BITMAPINFOHEADER));
file.read((char*)&File1_rgb, sizeof(File1_rgb));
//讀取Image data
file.close();
////////////////////////////////////////////////////
///2. Show 檔頭資訊:
//
////////////////////////////////////////////////////
Size=File1_F.bfSize;
Width=File1_I.biWidth;
Height=File1_I.biHeight;
cout<<"BITMAPFILEHEADER\n\n";
cout<<"File Size ="<<Size<<"\n";
cout<<"BITMAPINFOHEADER\n\n";
cout<<"WIDTH ="<<Width<<"\n";
cout<<"HEIGHT ="<<Width<<"\n";
////////////////////////////////////////////////////
///3. 影像處理: 改變矩陣內容
//
////////////////////////////////////////////////////
file.open(File3_Name,"r+b");
for(i=0;i<=File1_I.biHeight;i++)
{
for(j=0;j<=File1_I.biWidth;j++)
{
if(File1_rgb[256]>0)
*File3_pixel= *File1_pixel;
}
}
////////////////////////////////////////////////////
///4. 影像matrix檔案寫出
//
////////////////////////////////////////////////////
/*fstream file3;
file3.open(File3_Name,std::ios::out|std::ios::binary);
file3.write((char*)&F, sizeof(BITMAPFILEHEADER));
file3.write((char*)&I, sizeof(BITMAPINFOHEADER));
file3.write((char*)&rgb, sizeof(rgb));
file3.write((char*)pixel, I.biWidth*I.biWidth);
file3.close(); */
system("pause");
return 0;
}