`
olife
  • 浏览: 76524 次
  • 性别: Icon_minigender_1
  • 来自: SKY
文章分类
社区版块
存档分类
最新评论

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

阅读更多

#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();
                }
分享到:
评论

相关推荐

    C++读取TM数据写8位BMP图像

    使用C++读取TM遥感数据,并写成8位的BMP位图

    C++读取保存BMP图像

    C++读取保存BMP图像,包括8位,24位的读取和保存,灰度图的转换,不使用任何已有读取、转换、保存等库函数。跨平台使用,理论上Linux与Windows上均可使用,Windows上测试成功。

    读取bmp读取bmp读取bmp读取bmp读取bmp读取bmp图片

    读取bmp读取bmp读取bmp读取bmp读取bmp读取bmp图片读取bmp读取bmp读取bmp读取bmp读取bmp读取bmp图片 读取bmp读取bmp读取bmp读取bmp读取bmp读取bmp图片 读取bmp读取bmp读取bmp读取bmp读取bmp读取bmp图片 读取bmp读取...

    c++读取bmp格式图片

    c++读取bmp格式图片

    C++读取XML详解

    C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++读取XML详解C++...

    c++读取bmp图像

    使用c++语言提取bmp图像的像素信息,然后将这些信息储存在图像像素.txt中,同时能够将读取之后的图像复制一遍储存。

    读取BMP文件C++实现

    读取,存储BMP资源C++实现 读取BMP图像的高宽,像素信心放在全局变量中

    C++ 读取bmp图片示例程序

    功能: 读取bmp 代码示例: typedef struct _bmpsize { long bmpWidth;//位图宽,单位为象素LONG=long(有符号) long bmpHeight;//位图高,单位为象素LONG=long(有符号) unsigned short BitCount;//每个...

    C++读取bmp文件

    在vc+ xp运行成功 可读取bmp文件,是初学者的理想选择!赶紧看看吧

    C++读取Excel数据

    C++读取Excel数据 ole 模式 VS2003 Excel 2003

    C++语言BMP图像高度宽度和数据的读取

    利用C++语言,读取BMP图像的高度和宽度,将数据转成为RAW格式,再利用文件头和RAW文件的数据,重新转化成BMP文件。其中采用了动态二维数组。

    bmp24位彩色图像转8位灰度图像(纯C++)

    bmp24位彩色图像转8位灰度图像,纯C++语言实现,适合图片处理初学者。

    8bit 位bmp 转换 24bit

    8bit 位bmp 转换 24bit vs 2008 上面编译。 没有安全检查代码,只有核心的转换代码。 里面有 说明.docx 可以查看

    C++读取、旋转和保存.bmp文件 代码

    本文件中有三份C++程序的代码,均可以读取.bmp文件的图像。其中包括彩色的.bmp文件和黑白的.bmp文件的代码。并且可以实现对文件图像的任意角度的旋转,以及旋转后的图像保存,为广大朋友提供诸多便利。并且也可以在...

    C++读取html内容

    C++读取html内容,支持HTTPS,只包含cpp,h文件,可以应用到任何C++项目经理

    用C++编程实现BMP文件格式的读取

    用C++编程实现BMP文件格式的读取,此代码可以直接在c++上面运行

    RGBreader.zip_C++读取bmp rgb_bmp RGB

    把基于BMP格式的图片的每一点的RGB的值读取出来

    C++读取excel数据

    读取环境为Win10+VS2015,个人参考资料封装的excel读取模块用来读取Excel2007中的数据,文件为压缩文件,亲测可用。

    读取BMP图片并显示在控件上面

    读取BMP图片并显示在控件上面读取BMP图片并显示在控件上面

    C++读取XML文件

    c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件c++读取xml文件

Global site tag (gtag.js) - Google Analytics