如何用C++获取一张bmp图片(24位)的RGB量及长宽

有一张放在D盘根目录的图片,要求用一个函数获取它某个点的RGB分量(int类型)。即输入坐标获取RGB分量。代码尽量简短。... 有一张放在D盘根目录的图片,要求用一个函数获取它某个点的RGB分量(int类型)。即输入坐标获取RGB分量。
代码尽量简短。
展开
 我来答
lovejia
推荐于2018-04-12 · 超过22用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:43.2万
展开全部
{
int x=5,y=5,width,height;//x,y是需要查找的点的坐标,从0开始
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);//启动GDI+,方便加载位图
Bitmap bmp(_T("E:\\c.bmp"));
HBITMAP hBmp = NULL;
bmp.GetHBITMAP(Color(0),&hBmp);//获取位图句柄
BITMAP bi = {0};
GetObject(hBmp,sizeof(BITMAP),&bi);//获取位图信息,包括深度,宽高,步长等
width = bi.bmWidth;height = bi.bmHeight;//保存宽高
byte *pBit = new byte[bi.bmWidthBytes*bi.bmHeight];
::GetBitmapBits(hBmp,bi.bmWidthBytes*bi.bmHeight,pBit);//获取位图数据
int n = y*bi.bmWidthBytes + x*bi.bmBitsPixel/8;
int out = RGB(pBit[n+2],pBit[n+1],pBit[n]);//定位到数据中获取颜色信息
GdiplusShutdown(gdiplusToken);//关闭GDI+
}

这里是用GDI+加载位图,也可以用第三方库加载位图获取位图数据然后直接定位像素,使用的时候记得加GDI+的头文件,否则编译不过
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式