获取图片的RGB分量

本文介绍了一种方法,用于将BMP格式的图片转换为RGB颜色数据,并将其存储为十六进制形式的C/C++数组。这种方法适用于嵌入式系统或者资源受限的环境中加载图像。代码展示了如何遍历图像的每一个像素并提取其红绿蓝分量。
voidCShowBMPDlg::GetRGB(CDC&dcPic)
...{
std::ofstreamofsCOLOR;
ofsCOLOR.open(strPathName
+"_rgb.h");

inti=0,j=0;
intr=0,g=0,b=0;
unsigned
intcRGB=0;

COLORREFc;
ofsCOLOR
<<"constU32picData[]="<<std::endl;
ofsCOLOR
<<"{";
ofsCOLOR
<<std::setfill('0');
ofsCOLOR
<<std::setbase(16);

ofsCOLOR
<<"0x"<<std::setw(8)<<m_bmW<<","
<<"0x"<<std::setw(8)<<m_bmH<<","<<std::endl;

for(i=0;i<m_bmH;++i)//
...{
for(j=0;j<m_bmW;++j)//
...{
c
=dcPic.GetPixel(j,i);//(x,y)==(j,i)

//ofsCOLOR<<c<<"";
r=c&0x0000ff;
g
=(c&0x00ff00)>>8;
b
=(c&0xff0000)>>16;

cRGB
=r<<16|g<<8|b;
ofsCOLOR
<<"0x"<<std::setw(8)<<cRGB<<",";

//ofsCOLOR<<"0x"<<std::setw(2)<<b<<","
//<<"0x"<<std::setw(2)<<g<<","
//<<"0x"<<std::setw(2)<<r<<","
//<<"0x"<<std::setw(2)<<0<<",";
}

ofsCOLOR
<<std::endl;
}

ofsCOLOR
<<"};"<<std::endl;

ofsCOLOR.close();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值