都是 Thumbs.db 惹的祸

 为了在图片列表中能够根据图片的长宽自动缩放而得到较高质量的thumbnail,如下图:

 

我采取了下面的方法进行缩放:

Code

 

在本地调试一切正常,传到服务器上面,部分的图片报这个错误:

 

初遇此错误,出于对自己写的代码的不放心,检查了无数遍,一无所获;实在无路可走的时候只能瞎走了,于是首先想到的就是 反编译System.Drawing.Image类,看看到底是什么地方的内存溢出,于是安装QFE,在VS2008下面对Framework进行调试,无果,因为本地测试根本没有办法重现错误!

于是抱着试试看的心理,Google “System.OutOfMemoryException: Out of memory.”居然发现N个倒霉蛋和我一样的境遇,都是图像处理导致的内存溢出,只是由于 System.Drawing.Image.FromFile 这个方法造成内存溢出的并不多见,终于,让我发现了下面的文章:

http://weblogs.asp.net/plip/archive/2006/08/04/Image.FromFile_280022002E002E002E0022002900_-and-System.OutOfMemoryException.aspx

“I found out what it was - I'd not limited the file types that my folder search was performing, so it was also picking up the Windows XP automatically generated Thumbs.db, when it loaded that the above exception occurred.
Just thought this might help others out.”

于是恍然大悟,发现自己release的时候确实将repository的图像文件都发布出去了,于是乎Thumbs.db 也被跟着部署到了server上面。所以导致了这样的错误。

于是远程将repository 目录下的Thumbs.db删除,问题便得以解决。

关于 Thumbs.db,园子里有一些文章可以作为参考:

1, GIS的学习  http://www.cnblogs.com/zhangjun1130/archive/2009/01/14/1375836.html

2, 灵感之源 http://www.cnblogs.com/unruledboy/archive/2005/11/06/thumbsdbviewer.html


posted on 2009-03-24 14:36  Kevin Shi  阅读(2170)  评论(8编辑  收藏  举报

导航