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
原创粉丝点击