最近要实现遍历某路径下所有JPG文件,并获取每个图片的大小,我的代码如下:
HBITMAP image;
CBitmap m_bmp;
image= (HBITMAP)::LoadImage( NULL,L"D:\\a1.jpg",IMAGE_BITMAP,0,0,0);
BITMAP bm;
m_bmp.Attach(image);
m_bmp.GetObject(sizeof(BITMAP),&bm);
//bm.bmWidth中保存图片的宽度
//bm.bmHeight中保存图片的高度
结果总是image=NULL;
于是,我调用了DWORD geterror=GetLastError();
结果geterror=0,调用成功?
这下郁闷的两个小时开始了...
后来,在牛人的提醒下选择了CImage,代码如下:
CImage image;
CBitmap m_bmp;
image.Load(L"D:\\a1.jpg");
BITMAP bm;
m_bmp.Attach(image);
m_bmp.GetObject(sizeof(BITMAP),&bm);
//bm.bmWidth中保存图片的宽度
//bm.bmHeight中保存图片的高度
成功获取图片大小。
原因分析:
If the hinst parameter is NULL and the fuLoad parameter omits the LR_LOADFROMFILE value, the lpszName specifies the OEM image to load. The OEM image identifiers are defined in Winuser.h and have the following prefixes.
代码中的参数设置标示只能加载OEM图像。