C++读取BMP位图数据的方法
来源:互联网 发布:pxcook像素大厨 mac 编辑:程序博客网 时间:2024/05/17 22:42
- BITMAPFILEHEADER fileheader={0};
- fread(&fileheader,sizeof(fileheader),1,fp);
- if(fileheader.bfType!=0x4D42) // 判断是否为BMP图片
- {
- fclose(fp);
- return ;
- }
- BITMAPINFOHEADER head;
- fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
- long bmpWidth = head.biWidth; //获取图片的宽
- long bmpHeight = head.biHeight; //获取图片的宽
- WORD biBitCount = head.biBitCount;
- if(biBitCount != 24) // 是否为24位位图
- {
- ::AfxMessageBox(_T("请选择24位位图!"));
- fclose(fp);
- return ;
- }
- int totalSize = (bmpWidth *biBitCount/8+3)/4*4*bmpHeight;
- BYTE *pBmpBuf = new BYTE[totalSize];
- FILE *fp=NULL;
- int ret = fopen_s(&fp,"D:\\11.bmp","rb");
- if(fp==0)
- {
- return ;
- }
- BITMAPFILEHEADER fileheader={0};
- fread(&fileheader,sizeof(fileheader),1,fp);
- if(fileheader.bfType!=0x4D42)
- {
- fclose(fp);
- return ;
- }
- BITMAPINFOHEADER head;
- fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
- long bmpWidth = head.biWidth;
- long bmpHeight = head.biHeight;
- WORD biBitCount = head.biBitCount;
- if(biBitCount != 24)
- {
- ::AfxMessageBox(_T("请选择24位位图!"));
- fclose(fp);
- return ;
- }
- int totalSize = (bmpWidth *biBitCount/8+3)/4*4*bmpHeight;
- BYTE *pBmpBuf = new BYTE[totalSize];
- size_t size = 0;
- while(true)
- {
- int iret = fread(&pBmpBuf[size],1,1,fp);
- if(iret == 0)
- break;
- size = size + iret;
- }
- fclose(fp);
- int i,j;
- CClientDC dc(this);
- int pitch=bmpWidth%4;
- for(i=0;i<bmpHeight;i++)
- {
- int realPitch=i*pitch;
- for(j=0;j<bmpWidth;j++)
- {
- dc.SetPixel(j,i,RGB(
- pBmpBuf[(i*bmpWidth+j)*3+2+realPitch],
- pBmpBuf[(i*bmpWidth+j)*3+1+realPitch],
- pBmpBuf[(i*bmpWidth+j)*3+realPitch]));
- }
- }
- delete [] pBmpBuf; pBmpBuf = NULL;
- return ;
http://binge518.blog.51cto.com/1554719/1169618
阅读全文
0 0
- C++读取BMP位图数据的方法
- 位图的读取,PNG转化为BMP
- 一名小白读取BMP位图的一点记录
- C++ BMP位图读取
- C++ bmp位图读取
- 使用Excel的VBA来读取和修改bmp位图像素数据
- BMP位图数据
- c语言读取BMP图片的RGB数据
- 读取Bitmap(设备无关位图)数据的经典C代码
- C++读取bmp位图入门
- C++读取bmp位图入门
- BMP位图读取部分代码
- VC++6.0 中BMP位图的读取和显示
- 遍历文件目录及bmp位图信息头的读取
- (学习笔记3)BMP位图的读取与显示
- 读取bmp图片的文件头,与位图信息头
- C语言读取BMP图像数据(转)
- 使用C语言读取bmp文件数据
- 每隔一小时生成一个新的日志文件,当寄存器状态发生变化记录一次
- 温度计样式
- SAAS技术交流系列(一)
- mysql5.7 主从配置
- Android 之路4---Java简介
- C++读取BMP位图数据的方法
- 树状数组习题:棋子等级
- Android定时广播和定时服务两种实现方式
- C# 浅谈ThreadPool -- 上篇(Enqueue)
- Linux Git常见命令
- 百度地图Android,v4_5_0.so
- 数据挖掘中常用的数据清洗方法有哪些?
- hahahaha
- Matlab 之 im2col 函数用法