六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 33|回复: 0

[c++] 讀取一個8bit的bmp

[复制链接]

升级  32%

24

主题

24

主题

24

主题

秀才

Rank: 2

积分
98
 楼主| 发表于 2013-1-26 14:28:35 | 显示全部楼层 |阅读模式
#include <iostream>#include <fstream>using namespace std;typedef unsigned char   BYTE;typedef unsigned short  WORD;typedef unsigned long   DWORD;typedef long            LONG;void main(){    fstream file;        int i,j;    char fileName[32], RGBQUAD[4][256], PIXEL[128][128],temp[128][128];        WORD bfType;    DWORD bfSize;    WORD bfReserved1;    WORD bfReserved2;    DWORD bfOffBits;    DWORD biSize;    LONG biWidth;    LONG biHeight;    WORD biPlanes;    WORD biBitCount;    DWORD biCompression;    DWORD biSizeImage;    LONG biXPelsPerMeter;    LONG biYPelsPerMeter;    DWORD biClrUsed;    DWORD biClrImportant;    //將資料從檔案輸入到記憶體        cout << "Open FileName: ";    cin >> fileName;    file.open(fileName, ios::in|ios::binary);    file.read((char*)&bfType, sizeof(WORD));    file.read((char*)&bfSize, sizeof(DWORD));    file.read((char*)&bfReserved1, sizeof(WORD));    file.read((char*)&bfReserved2, sizeof(WORD));    file.read((char*)&bfOffBits, sizeof(DWORD));    file.read((char*)&biSize, sizeof(DWORD));    file.read((char*)&biWidth, sizeof(LONG));    file.read((char*)&biHeight, sizeof(LONG));    file.read((char*)&biPlanes, sizeof(WORD));    file.read((char*)&biBitCount, sizeof(WORD));    file.read((char*)&biCompression, sizeof(DWORD));    file.read((char*)&biSizeImage, sizeof(DWORD));    file.read((char*)&biXPelsPerMeter, sizeof(LONG));    file.read((char*)&biYPelsPerMeter, sizeof(LONG));    file.read((char*)&biClrUsed, sizeof(DWORD));    file.read((char*)&biClrImportant, sizeof(DWORD));    file.read(RGBQUAD[0], sizeof(RGBQUAD));    file.read(PIXEL[0], sizeof(PIXEL));    file.close();    //顯示檔案資訊        cout << "FILE_HEADER\n"         << "bfType=\t\t"       << bfType       << '\n'         << "bfSize=\t\t"       << bfSize       << '\n'         << "bfReserved1=\t"    << bfReserved1  << '\n'         << "bfReserved2=\t"    << bfReserved2  << '\n'         << "bfOffBits=\t"      << bfOffBits    << "\n\n"         << "INFO_HEADER\n"         << "biSize=\t\t"       << biSize       << '\n'         << "biWidth=\t"        << biWidth      << '\n'         << "biHeight=\t"       << biHeight     << '\n'         << "biPlanes=\t"       << biPlanes     << '\n'         << "biBitCount=\t"     << biBitCount   << '\n'         << "biCompression=\t"  << biCompression    << '\n'         << "biSizeImage=\t"    << biSizeImage      << '\n'         << "biXPelsPerMeter="  << biXPelsPerMeter  << '\n'         << "biYPelsPerMeter="  << biYPelsPerMeter  << '\n'         << "biClrUsed=\t"      << biClrUsed        << '\n'         << "biClrImportant=\t" << biClrImportant   << "\n\n";                //將圖片資訊暫存到TEMP裡面                for(i=127;i>=0;i--){                        for(j=127;j>=0;j--){                                temp[i][j]=PIXEL[i][j];                                }                        }                        //將資訊反轉180度                for(i=0;i<=127;i++){                        for(j=0;j<=127;j++){                                PIXEL[127-i][127-j]=temp[i][j];                                }                        }                //將資料從記憶體輸出到檔案                        cout << "輸入旋轉後儲存的名稱:\t";            cin >> fileName;                file.open(fileName, ios::out|ios::binary);                file.write((char*)&bfType, sizeof(WORD));                file.write((char*)&bfSize, sizeof(DWORD));                file.write((char*)&bfReserved1, sizeof(WORD));                file.write((char*)&bfReserved2, sizeof(WORD));                file.write((char*)&bfOffBits, sizeof(DWORD));                file.write((char*)&biSize, sizeof(DWORD));                file.write((char*)&biWidth, sizeof(LONG));                file.write((char*)&biHeight, sizeof(LONG));                file.write((char*)&biPlanes, sizeof(WORD));                file.write((char*)&biBitCount, sizeof(WORD));                file.write((char*)&biCompression, sizeof(DWORD));                file.write((char*)&biSizeImage, sizeof(DWORD));                file.write((char*)&biXPelsPerMeter, sizeof(LONG));                file.write((char*)&biYPelsPerMeter, sizeof(LONG));                file.write((char*)&biClrUsed, sizeof(DWORD));                file.write((char*)&biClrImportant, sizeof(DWORD));                file.write(RGBQUAD[0], sizeof(RGBQUAD));                file.write(PIXEL[0], sizeof(PIXEL));                file.close();                }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表