使用C++如何读取各种类型的图像文件

使用版本visualstudio2012,现在要做一个跟图片解析有关的作业,需要读入诸如JPG,PNG等格式的图片,读出每个像素的RGB信息。。现在只会处理bmp文件(因... 使用版本visual studio 2012,现在要做一个跟图片解析有关的作业,需要读入诸如JPG,PNG等格式的图片,读出每个像素的RGB信息。。现在只会处理bmp文件(因为bmp没有压缩。。)。刚刚学程设,所以尽量解释地简单详细一些。重点是可以读出每个像素的RGB信息。谢谢。 展开
 我来答
zhccsd
推荐于2017-09-06 · TA获得超过4042个赞
知道大有可为答主
回答量:1347
采纳率:66%
帮助的人:898万
展开全部
以下是从文件读取图片并转换成灰度图并画在界面上的程序
重点是pixel=img.GetPixel(x,y);这句,lz可以参考一下
JPG,BMP,PNG三种图片都测试过没问题,其他格式的没测试过
CClientDC dc(this);
CFileDialog file(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("JPG(*.JPG)|*.JPG|BMP(*.BMP)|*.BMP|PNG(*.PNG)|*.PNG||"),NULL);
if(file.DoModal()==IDOK)
{
//MessageBox(file.GetPathName());
CImage img;
img.Load(file.GetPathName());
int g;
if(img.GetWidth()<1000 && img.GetHeight()<1000)
{
int size= img.GetWidth()*img.GetHeight();
int up=0;
double g;
COLORREF pixel;
for(int x=0;x<img.GetWidth();++x)
{
for(int y=0;y<img.GetHeight();++y)
{
pixel=img.GetPixel(x,y);
if( ((int)( (GetRValue(pixel)+GetGValue(pixel)+GetBValue(pixel))/3 )) >=128) ++up;
g=int((GetRValue(pixel)+GetGValue(pixel)+GetBValue(pixel))/3);
img.SetPixel(x,y,RGB(g,g,g));
}
}
g=(double(up*100))/(double(size));
CString ts;
ts.Format(L"%d/%d(%lf%%)",up,size,g);
//MessageBox(ts);
//img.Save(L"d:\\1.jpg");
img.Draw(dc,5,5);
}
else
{
MessageBox(L"图片太大");
}
}
arongustc
科技发烧友

2013-08-04 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5759万
展开全部
这个是没有现成方法的,不同图像的方法不一样,甚至没有现成的库,只能自己研究对应的图像格式自己搞的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式