首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CListCtrl控件无法显示大容量图片的缩略图有关问题

2012-06-03 
CListCtrl控件无法显示大容量图片的缩略图问题我有一张图片,容量是1.53G,宽和高分别是30080和18240。显示缩

CListCtrl控件无法显示大容量图片的缩略图问题
我有一张图片,容量是1.53G,宽和高分别是30080和18240。显示缩略图的代码是这样的
  #define PICWIDTH 90 //缩略图的宽度
  #define PICHEIGHT 90 //缩略图的高度

  Bitmap bmp( wcstring );
  sourceWidth = bmp.GetWidth();
sourceHeight = bmp.GetHeight();
destWidth = (sourceWidth < PICWIDTH) ? sourceWidth : PICWIDTH;
destHeight = (sourceHeight < PICHEIGHT) ? sourceHeight : PICHEIGHT;
//Bitmap 转换为 CBitmap
Bitmap* pThumbnail = (Bitmap*)bmp.GetThumbnailImage(destWidth, destHeight, NULL, NULL);
HBITMAP hBmp;
pThumbnail->GetHBITMAP(Color(255,255,255),&hBmp);
// 删除缩略图指针
delete pThumbnail;

利用利用断点调试,发现sourceWidth 和sourceHeight 的值都是0。我想主要是因为图片太大,超过GDI+的显示范围。
前一段时间,有些朋友让我把图片先压缩,再显示缩略图,问题是我的程序实现的功能就是压缩图片。
如果为了显示缩略图,把图片加进去的时候就进行压缩。会不会对我的程序功能有影响?有没有其他的简便方法,我只要求显示缩略图,不要求显示这张图片。
问题困扰了我很久,还请众位高手帮忙...

[解决办法]
直接从原始图像读取部分数据构成缩略图。

[解决办法]
这个帖子有非常详细的讨论:
http://topic.csdn.net/u/20070207/18/4cd5283a-3184-4a70-a4fe-c7fd8a55f5cf.html

你用普通的方法基本不可能完成!如果更大的基本的BMP JPEG基本都不能用了,你必需自己来定义数据的格式,或者分割放在几个文件,然后用自己的逻辑(CreateFileMapping)来读取需要的数据显示。

热点排行