用C++如何读取图片

用C++如何读取图片,第1张

实现的方法和详细的 *** 作步骤如下:

1、第一步,在采样软件中找到软件快捷方式,然后单击以打开该软件,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,已经进入了取模软件,单击“载入”按钮以添加,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,选择要添加的,单击以选择,然后单击“打开”按钮,如下图所示,进入下一步。

4、然后,完成上述步骤后,单击“参数”按钮以进入参数设置界面,如下图所示,然后进入下一步。

5、随后,完成上述步骤后,根据实际情况进行相关参数的设置,如下图所示,然后进入下一步。

6、接着,完成上述步骤后,单击“参数确认”按钮,如下图所示,然后进入下一步。

7、然后,完成上述步骤后,单击“数据保存”按钮,如下图所示,然后进入下一步。

8、随后,完成上述步骤后,选择文件保存路径,然后单击“保存”按钮,如下图所示,然后进入下一步。

9、最后,完成上述步骤后,可以看到刚刚生成的C文件,只需将代码添加到C语言中即可,如下图所示。这样,问题就解决了。

可以用GDI+的Bitmap类

Bitmap bm("c:\\1bmp");

Color Cr;

bmGetPixel(10, 10, Cr);

BYTE bR = CrGetR();

BYTE bG = CrGetG();

BYTE bB = CrGetB();

bR, bG, bB 就是10,10这个坐标像素的RGB分量

使用GDI+需要包含 gdiplush头文件

连接gdipluslib库

你把位图的路径,付给fileName,用CFileFind类的FindNextFile方法查找该文件夹下的下一个文件(包括第一个),每读一文件,处理一次,最终可以全部处理完毕。

处理文件,也就是获得他的位图信息,或者说是像素值。这就用到DIB类,该类中提供了很多关于位图处理的函数,如获取位图数据的首地址等。不过这个类系统没有提供,不过网上很多地方都有,自己查一下吧

没有什么不同。

读出 BITMAPINFO 结构:

typedef struct tagBITMAPINFO {

BITMAPINFOHEADER bmiHeader;

RGBQUAD bmiColors[1];

} BITMAPINFO;

以后,

BITMAPINFOHEADER 结构 里就有 biBitCount

biBitCount 等于 16 就是16位,等于24 就是24位,等于32 就是32位。

颜色在哪,要考虑 biCompression 压缩方法,若等于 BI_RGB, bmiColors 就等于 NULL 在 bitmap 数组里 每个WORD 就是 一个像素点 5个 bits 兰,5个 bits 绿,再5个 bits 红,最高位不用。

其它方法自己看资料吧。

CImage m_image;//m_image就是要处理的图像

int bit=m_ImageGetBPP();//获取每点像素的位数(8,24,32等),如果只处理24位图,则bit可直接赋值为24

int width=m_ImageGetWidth();//图像的宽度(单位为像素)

int height=m_ImageGetHeight();//图像的长度(单位为像素)

HBITMAP bitmap = m_ImageDetach();//

CBitmap b_Image=CBitmap::FromHandle(bitmap);//获取CBitmap类的实例

DWORD totalbytes=widthheightbit/8;//要保存像素数据需要的总的字节数,24位图的话,每个像素需要3个字节

byte lpBits=new byte[totalbytes];//字节型数组,每个单位存一个字节的数据

int bytes=b_Image->GetBitmapBits(totalbytes,lpBits);//把像素数据存到数组lpBits里,通过看bytes是否为0可以知道是否成功,为0则没有成功

//接下来遍历数组即可获取像素数据,因为24位图是3个字节构成一个像素,所以遍历时要注意间隔。

CBitmap bitmap; //定义位图

bitmapLoadBitmap(IDB_BITMAP1);

CDC dc; //定义设备上下文

dcCreateCompatibleDC(pDC);

dcSelectObject(&bitmap);

BITMAP bt;

bitmapGetBitmap(&bt);

//显示位图;

pDC->BitBlt(1,1,btbmWidth,btbmHeight,&dc,0,0,SRCCOPY);

//扩大位图;

pDC->StretchBlt(btbmWidth+10,0,btbmWidth15,btbmHeight15,

&dc,0,0,btbmWidth,btbmHeight,SRCCOPY);

以上就是关于用C++如何读取图片全部的内容,包括:用C++如何读取图片、C++中如何打开bmp文件并且读取位图的像素信息、怎么获取位图信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10092113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存