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

被折叠的 条评论
为什么被折叠?



