C++读取和存储一幅BMP图像
来源:互联网 发布:im软件是什么 编辑:程序博客网 时间:2024/04/29 20:12
C++读取和存储一幅BMP图像
转载请注明出处
之前写过一篇介绍BMP格式的文章,这是C++处理数字图像的基础,只有知道了BMP文件在计算机里的存储结构,才能谈之后的图像处理。这里是连接地址:http://blog.csdn.net/carvin_zh/article/details/45875277
C++源码:
#include<iostream>#include<Windows.h>#include<malloc.h>#include<stdlib.h>#include<stdio.h>#include<string.h>using namespace std;void main (){char fileName[30]; //定义打开图像名字char *buf; //定义文件读取缓冲区char *p;int r,g,b,pix;HWND wnd; //窗口句柄HDC dc; //绘图设备环境句柄FILE *fp; //定义文件指针FILE *fpw; //定义保存文件指针 DWORD w,h; //定义读取图像的长和宽 DWORD bitCorlorUsed; //定义 DWORD bitSize; //定义图像的大小 BITMAPFILEHEADER bf; //图像文件头 BITMAPINFOHEADER bi; //图像文件头信息cout<<"请输入要打开文件的名字:";cin>>fileName;if((fp=fopen(fileName,"rb"))==NULL){ cout<<"文件未找到!"; exit(0);} fread(&bf,sizeof(BITMAPFILEHEADER),1,fp);//读取BMP文件头文件 fread(&bi,sizeof(BITMAPINFOHEADER),1,fp);//读取BMP文件头文件信息w=bi.biWidth; //获取图像的宽h=bi.biHeight; //获取图像的高bitSize=bi.biSizeImage; //获取图像的sizebuf=(char*)malloc(w*h*3); //分配缓冲区大小fseek(fp,long(sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)),0);//定位到像素起始位置fread(buf,1,w*h*3,fp); //开始读取数据wnd=GetForegroundWindow(); //获取窗口句柄dc=GetDC(wnd); //获取绘图设备int x=40;int y=40;p=buf;for(int j=0;j<h;j++){for(int i=0;i<w;i++){b=*p++;g=*p++;r=*p++;pix=RGB(r,g,b);SetPixel(dc,x+i,y+h-j,pix);}}fpw=fopen("LenaSaved.bmp","wb");fwrite(&bf,sizeof(BITMAPFILEHEADER),1,fpw); //写入文件头fwrite(&bi,sizeof(BITMAPINFOHEADER),1,fpw); //写入文件头信息p=buf;for(int j=0;j<h;j++){for(int i=0;i<w*3;i++){fwrite(p++,1,1,fpw);}}fclose(fpw);fclose(fp);//return fp;}
输入文件名:
显示图片:
存储的文件:
0 0
- C++读取和存储一幅BMP图像
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- [Visual C++](一)VC保存和显示数据库图像(BMP)
- 【数字图像处理一】BMP图像的读取
- C语言读取BMP图像数据(转)
- 使用C函数读取BMP格式图像
- 纯c语言读取BMP图像
- C语言读取BMP图像到数组,BMP图片格式
- 通过Delphi在SQL Server2000对BMP图像的存储和读取操作
- BMP图像的读取和生成
- C++读取BMP图像
- bmp图像读取
- BMP图像存储格式
- BMP图像存储格式
- BMP图像存储格式
- bmp图像存储问题
- bmp图像存储问题
- extents分配策略及AUTOALLOCATE碎片问题
- osg 打开Internet .ive模型文件问题—IIS
- 苹果Xcode帮助文档阅读指南
- OC-4-弱语法、类方法
- 云计算大数据时代所面临的机遇和挑战
- C++读取和存储一幅BMP图像
- jQuery idTabs 使用简介
- eclipse快捷键
- Android使用supportv7包实现网易云音乐首页titlebar
- XCOPY using
- 网页常见浏览器兼容问题及解决方法
- ORACLE自定义函数,return与out的纠结
- LeetCode Add and Search Word - Data structure design
- [转][译]一种度量准则:推土机距离Earth Mover's Distance(EMD)