VC/MFC 如何让一张图片文件放大缩小呢。比如图片的分辨率是1024*768的,然后将它成了分辨率改为300*300

或者把它设成3000*4000的。图片是否失真或者比例失调无所谓的。例如,有一张图片路径为c:\123.jpg,怎么把它读取了,然后再保存成我想要的大小的图片呢?使用的关... 或者把它设成3000*4000的。图片是否失真或者比例失调无所谓的。
例如,有一张图片路径为c:\123.jpg ,怎么把它读取了,然后再保存成我想要的大小的图片呢?使用的关键函数有多少个呢?我对图片的操作一点也不懂,求高手写一下简单逻辑和需要使用的函数
展开
 我来答
战狼之羊
推荐于2017-11-25 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:114万
展开全部
代码手写的,应该有错误,自己改下吧,hwnd是你View的m_hWnd句柄
CString path=_T("c:\123.jpg");
BITMAP bmp;
HBITMAP hbitmap=(HBITMAP)::LoadImage(0,path.AllocSysString(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
::GetObject(hbitmap,sizeof(BITMAP),&bmp);
DWORD dwCount=(DWORD)(bmp.bmWidthBytes*bmp.bmHeight);
CDC *pcdc = CDC::FromHandle(GetDC(hwnd));
pdc.CreateCompatibleDC(pcdc);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pcdc,width,height);
pdc.SelectObject(&bmp);
pdc.StretchBlt(0,0,300,300,(CDC*)pcdc,x,y,bmp.width,bmp.height,SRCCOPY);
CPalette *cpalette=pdc.GetCurrentPalette();

HPALETTE hpalette=HPALETTE(cpalette);
Bitmap bitmap(hbitmap,hpalette);
CString str=_T("C:\\123size.jpg");
WCHAR *pathname=str.AllocSysString();
CLSID clsid;
CString strsid=_T("image/jpg");
WCHAR *pstrsid=strsid.AllocSysString();
GetEncoderClsid(pstrsid,&clsid);
bitmap.Save(pathname,&clsid,NULL);
bingfeng1225
2012-07-30
知道答主
回答量:8
采纳率:0%
帮助的人:1.2万
展开全部
下载一个cximage库,这里面有对多种格式图片的支持,可以对图片进行放大、缩小等很多中效果,通过cximage就可以把他放到mfc界面上绘制了,你还可以选择等比例缩放,失真就能减少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quicker2008
2012-07-30 · TA获得超过118个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:86.2万
展开全部
比较简单的方法,是调用OpenCV cvResize()函数即可。
比较有创新的方法,是调用Windows API的 BMP StretchDIBits()函数即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式