Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2315162
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2009-01-05 20:14:34

MSDN中也说了, 尽管别用!

MSDN中没说, 它会抛出异常 OutOfMemoryException.
在下面一种情况下会抛出异常: Image 不是从文件构造, 比如从内存中构造, 或从 MemoryStream构造, 如:
        using (FileStream stream = new FileStream(dlg.FileName, FileMode.Open))
        {
            img = Image.FromStream(stream);
        }

这样的image 去调用该方法就会出问题.

GetThumbnailImage  会去先尝试获得图像文件中本身所保存的那个 thumbnail图片, 有一些图片文件格式对此是支持的. 正是因为这样, 如果你的image 不是从文件构造出来的, 或者是从文件构造出来, 但这个文件的stream被关闭了, 都会出这样一个bug.

下面是我在 Snippet compiler中复现此bug的代码段.
使用上述两种方法会出现这样的结果:


另外, 以 Image img = Image.FromFile(...) 方式构造出来的img, img被Dispose之前, 这个文件都是处于打开状态, 这一点同样MSDN没有正式记载. 正是因为这个原因我才用 using(FileStream ...) 来显式地关闭文件, 没想到引触另一暗礁.

文件:Default.rar
大小:1KB
下载:下载


阅读(2216) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~