如何用VISUAL C++打开BMP图像?求源代码

如题所述

第1个回答  2020-02-14
你首先需要了解bmp文件的文件结构。
1)前面14个字节是
文件头
——c++中有一个结构体
bitmapfileheader
与其对应
2)接下来的40个字节
是位图信息头
——
c++中有一个结构体
bitmapinfoheader
与其对应
3)再接下来就是调色板——字节数和你所用的文件的颜色总数有关,例如,256色,就有256条记录;16色就有,16条记录。注意,每条记录有4个字节,文件中存储顺序(bgr)再加上一个保留字节。如果是24真彩色,那么就没有调色板。
4)接下来就是位图信息了。如果是24真彩色,那么就是三个字节代表一个像素的rgb;如果,不是24真彩色,就是一个字节代表一个像素的rgb。需要注意的是,(非24真彩色时)这一个字节代表的只是索引值,用来寻找调色板中对应该索引的rgb值。

综上所述,你只要用一个指针指向位图信息,再根据相应的颜色数,就可以取得rgb值。
贴具体代码,比较麻烦。不过,弄清楚了这些,你就可以自己写了。

如何用VISUAL C++打开BMP图像?求源代码
MFC的话可以用CBITMAP类来处理bmp,读取的话用win32 api loadimage();平滑不理解,平滑移动?简单点设置个后台缓冲,俗称double buffer 二值化的话先把彩色RGB的转化为黑白,比较常用的是转成亮度 Luminance=0.3 R + 0.59 G + 0.11 B,亮度的范围是0-255,把RBG都设置成亮度值,显示出来的就...

如何有visual c++求bmp文件的rbg值(要源代码)
你首先需要了解bmp文件的文件结构。 1)前面14个字节是 文件头 ——c++中有一个结构体 BITMAPFILEHEADER 与其对应 2)接下来的40个字节 是位图信息头 —— C++中有一个结构体 BITMAPINFOHEADER 与其对应 3)再接下来就是调色板——字节数和你所用的文件的颜色总数有关,例如,256色,就有256条记录...

怎么用Visual C++读取BMP格式图像?
BITMAPFILEHEADER BITMAPINFOHEADER 调色板 位图数据 如果定义高度为正数则数据从下向上存储,否则从上向下。每行的数据要4字节对齐。

求教如何用c++打开图片
环境你要装好!下载好opengl ---下面是源代码,打开一个.bmp格式的图片!也可以用DX来做!include<gl\/glut.h> define FileName "io.bmp"static GLint imagewidth;static GLint imageheight;static GLint pixellength;static GLubyte* pixeldata;include<stdio.h> include<stdlib.h> void display(void)...

如何用c++语言实现对bmp二值图像数据的访问?
1.图片也是属于文件类型的一种,图片属于二进制文件。使用fopen函数的二进制模式“rb”就可以打开。2.例程:include <stdlib.h> #include <stdio.h> int main () { FILE * fpPhoto, * fpText, * fpTarget ; int iRead ; char szBuf[100] ; printf ("请输入第...

BMP图像解码器源代码?C++编的
delete jpeg;} delete bitmap;} void Jpeg2Bitmap(AnsiString jpegFile, AnsiString bmpFile){ Graphics::TBitmap *bmp = new Graphics::TBitmap();TJPEGImage *jpeg = new TJPEGImage();jpeg->LoadFromFile(jpegFile);bmp->Assign(jpeg);bmp->SaveToFile(bmpFile);delete jpeg;delete bmp;} ...

vc++打开bmp图片
项目是单文档应用程序。你在用VC向导建立工程的时候,先选MFC,再选单文档。ID_FILE_OPEN,其实就是菜单项的ID号。指的是“文件”菜单下的“打开”菜单项。你只要在VC左边的那一栏,切换到resouce。然后点开“文件”菜单,选择“打开”菜单项,双击就行了。如果双击不行,右击看看有没有添加响应函数...

用C++完成一个程序,能读取BMP图象文件...
bool readBmp(char *bmpName){ FILE *fp=fopen(bmpName,"rb");\/\/二进制读方式打开指定的图像文件 if(fp==0) return 0;\/\/跳过位图文件头结构BITMAPFILEHEADER fseek(fp, sizeof(BITMAPFILEHEADER),0);\/\/定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中 BITMAPINFOHEADER head;frea...

用C或C++怎样提取出bmp图像的像素点信息值?用LSB算法做信息隐藏,位图是...
CImage m_image;\/\/m_image就是要处理的图像 int bit=m_Image.GetBPP();\/\/获取每点像素的位数(8,24,32等),如果只处理24位图,则bit可直接赋值为24 int width=m_Image.GetWidth();\/\/图像的宽度(单位为像素)int height=m_Image.GetHeight();\/\/图像的长度(单位为像素)HBITMAP bitmap =...

有没有人能提供用C++ \/MFC一个打开BMP位图文件的方法,求具体步骤...
如果要做图像处理, 你所要的就是 读取文件头,按照文件类型,进行RGB三色的获取值.然后按照三色点画象素 BMP 通常是 有Header,然后按行按点 读取 3BYTE 一个象素点 如果只是显示,那就按CSUXZP的方法.

相似回答
大家正在搜