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 |
下载: | 下载 |
|
阅读(2273) | 评论(0) | 转发(0) |