博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++语言基础 例程 案例:bmp文件格式剖析
阅读量:6495 次
发布时间:2019-06-24

本文共 1757 字,大约阅读时间需要 5 分钟。

  

附:二进制文件查看器及示例bmp文件 

用程序读出BMP文件信息

//readbmp.h#ifndef READBMP_H_INCLUDED#define READBMP_H_INCLUDEDtypedef unsigned char BYTE;typedef unsigned short int UINT;typedef short int WORD;typedef int DWORD;typedef long LONG;typedef struct tagBITMAPFILEHEADER{    UINT bfType; /*说明文件的类型*/    DWORD bfSize; /*说明文件的大小*/    UINT bfReserved1; /*保留,设置为0 */    UINT bfReserved2; /*保留,设置为0*/    DWORD bfOffBits; /*到图像数据的偏移量*/} BITMAPFILEHEADER;typedef struct tagBITMAPINFOHEADER{    DWORD biSize; /*BITMAPINFOHEADER结构所需要的字节数*/    LONG biWidth; /*图像的宽度,以像素为单位*/    LONG biHeight; /*图像的高度,以像素为单位*/    WORD biPlanes; /*为目标设备说明位面数,其值设置为1*/    WORD biBitCount; /*位数/像素*/    DWORD biCompression; /*图像数据压缩的类型:不压缩,或4/8位RLE */    DWORD biSizeImage; /*图像的大小,以字节为单位。*/    LONG biXPelsPerMeter; /*水平分辨率,用像素/米表示*/    LONG biYPelsPerMeter; /*垂直分辨率,用像素/米表示*/    DWORD biClrUsed; /*位图使用的彩色表中的颜色索引数:2/16/256/224*/    DWORD biClrImportant; /*对图像显示有重要影响的颜色索引的数目,如果是0,表示都重要*/} BITMAPINFOHEADER;typedef struct tagRGBQUAD   /* rgbq */{    BYTE rgbBlue; /*指定蓝色强度*/    BYTE rgbGreen; /*指定绿色强度*/    BYTE rgbRed; /*指定红色强度*/    BYTE rgbReserved; /*保留,设置为0 */} RGBQUAD;typedef struct tagBITMAPINFO{    BITMAPINFOHEADER bmiHeader; // 位图信息头    RGBQUAD bmiColors[16]; // 颜色表} BITMAPINFO;//像素信息typedef unsigned char IMAGEDATA;#endif // READBMP_H_INCLUDED
//main.cpp#include "readbmp.h"#include 
#include
#include
#include
#include
using namespace std;//变量定义BITMAPFILEHEADER bmpHeader; //文件头BITMAPINFOHEADER bmpInfoHeader; //文件信息头RGBQUAD *colorTable; //彩色表IMAGEDATA *bmpData;int main() { char bmpFileName[80]="bmp16bit.bmp";//bmp文件名 ifstream bmpFile(bmpFileName, ios::in|ios::binary); if(!bmpFile) { cerr<<"open error!"<

转载地址:http://mpyyo.baihongyu.com/

你可能感兴趣的文章
JMeter学习(二十三)关联
查看>>
【leetcode】Best Time to Buy and Sell 3 (hard) 自己做出来了 但别人的更好
查看>>
通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
查看>>
sdut AOE网上的关键路径(spfa+前向星)
查看>>
C++编程思想重点笔记(上)
查看>>
【转发】什么时候该用委托,为什么要用委托,委托有什么好处
查看>>
[原]VS2012编译GLEW 1.11
查看>>
[AngularJS] Hijacking Existing HTML Attributes with Angular Directives
查看>>
关于android.view.WindowLeaked(窗体泄露)的解决方案
查看>>
微软职位内部推荐-Software Engineer II-News
查看>>
(转)I 帧和 IDR 帧的区别
查看>>
如何更快速加载你的JS页面
查看>>
解决oracle11g安装导致数据库无法自动搜集统计信息-转
查看>>
Unix_Linux系统定时器的应用(案例)
查看>>
[Java基础] Java如何实现条件编译
查看>>
【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装
查看>>
设置网页标题图标
查看>>
mysql通过查看跟踪日志跟踪执行的sql语句
查看>>
Android_CodeWiki_01
查看>>
Web QQ 协议 登录加密算法 —— VC++实现
查看>>