位图BitMap图像的读取与存储
来源:互联网 发布:手机看片下什么软件 编辑:程序博客网 时间:2024/05/16 20:29
做图像处理时的源文件一般要用无损的图像文件格式,位图(BitMap)是windows系统下可存储无压缩图像的文件格式。要实现位图文件的读取和存储,首先要明白位图文件的的存储数据结构。位图文件由四部分依序组成:BITMAPFILEHEADER,BITMAPINFOHEADER,调色板,Image Data。
1)BITMAPFILEHEADER结构的长度是固定的14个字节,描述文件的有关信息。其数据结构是:
typedef struct tagBITMAPFILEHEADER { WORD bfType;//must be 0x4D42. DWORD bfSize;//the size of the whole bitmap file. WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits;//the sum bits of BITMAPFILEHEADER,BITMAPINFOHEADER and RGBQUAD;the index byte of the image data.} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;2)BITMAPINFOHEADER结构的长度是固定的40个字节,描述图像的有关信息。其数据结构是:
3)调色板:现在的计算机大都是32位或是更高,于是图像数据可用真彩色24位表达的,即每个像素均由24bit表示,每8bit表示RGB三色中的一色。但以前的计算机处理能力较差,图像用1位、4位或8位,即BITMAPINFOHEADER中的biBitCount不是24,这时又想表达出RGB色彩就需要调色板,调色板即使将图像数据中使用的一种颜色对应到RGB颜色中,这样图像数据中的像素值就是一个索引值,真正的像素值是这个索引值对应的调色板中的值。调色板是一个数组,数组中每个元素就是一个rgb颜色,对于8位图像,最多可表达256种颜色,调色板的大小就是256。调色板数组中每个元素的数据结构:
- #include <windows.h>
- class BitMap
- {
- public:
- BitMap();
- ~BitMap();
- protected:
- BITMAPFILEHEADER fileHeader;
- BITMAPINFOHEADER infoHeader;
- public:
- int width_p,height_p,bitCount;
- unsigned char *dataBuf;
- LPRGBQUAD colorTable;
- bool Read(char *fileName);
- bool Write(char *_fileName);
- };
#include <windows.h>class BitMap{public: BitMap(); ~BitMap();protected: BITMAPFILEHEADER fileHeader; BITMAPINFOHEADER infoHeader;public: int width_p,height_p,bitCount; unsigned char *dataBuf; LPRGBQUAD colorTable; bool Read(char *fileName); bool Write(char *_fileName); };方法(BitMap.cpp):
- void main()
- {
- BitMap* bm=new BitMap();
- bm->Read("nv.BMP");
- bm->Write("nvnew.bmp");
- delete bm;
- }
0 0
- 位图BitMap图像的读取与存储
- 位图BitMap图像的读取与存储
- 位图BitMap图像的读取与存储
- 位图BitMap图像的读取与存储
- WINAPI 读取位图Bitmap
- Bitmap位图的旋转与缩放
- Bitmap 位图的渲染与操作
- 读取Bitmap(设备无关位图)数据的经典C代码
- DIB位图(Bitmap)的读取和保存
- BitMap位图的设计
- 存储、读取二进制的图像
- openCv学习笔记(十一)—位图的读取与存储(c语言实现)
- 通过Quartz+Core Image读取JPEG图像的二进制位图以及将二进制位图做成图像
- Bitmap位图渲染与操作
- Bitmap位图文件读取、保存、屏幕截图
- Bitmap位图文件读取、保存、屏幕截图
- Android中Bitmap位图的渲染与操作
- QT中位图bitmap与VC的区别
- 安卓实现微信分享——完整
- 关于数据结构的学习经验分享 (二叉树相关的内容)
- shell测试
- python filter()、map()、reduce()函数解析
- 程序员面试宝典(第5版)——互动出版网
- 位图BitMap图像的读取与存储
- 计算机网络之路由器与分组交换
- B返回A时,对A进行操作
- 2015程序员值得收藏的十大主流button模式
- iOS开发应用上传AppStore的步骤
- 在jquery中使用checkbox控件标签的隐藏和显示
- 抽象和接口的区别
- Xcode7报错:Xcode setting ENABLE_BITCODE
- Wiwiz网页认证后的悬浮插播广告功能