日期:2014-05-16  浏览次数:21047 次

求C#中快速获取图片缩略图(效率要很快)
问一下大家,知不知道C#中获取图片缩略图的快速方式.
使用C#自带的Image.GetThumbnailImage();是现在我找到的最快的算法,但还是不够快,比如处理400M的照片数据要十几秒;

我看其他的一些程序,比如<美图看看>秒速处理上G的图片数据量,不知道是怎么做到的.

我试过将照片数据锁定到系统内存中,使用指针遍历的产生缩略图的效率还不如C#自身提供的.
(慢了一倍,我分析了一下效率,70%左右的效率是浪费在图片格式转换上了,这个没办法了).


我也听过读取Window资源文件夹下的Thumbs.db文件,这个方法速度是快,但不能保证该文件夹下一定有Thumbs.db文件啊.
不知道,大家有什么想法. 

还有JPG和PSD格式的图片是有内置缩略图的,其他格式的就没有了 .

------解决方案--------------------
400M的文件肯定是BMP文件,不太可能是JPG,因为这么大的JPG你用C#时无法打开的。

美图看看有N多BUG, 他秒速处理上G大小的图片数量,绝对不是第一次查看的时候。 

关于C#的查看缩略图的东西,我曾经发表过一篇文章

http://www.cnblogs.com/Imageshop/archive/2013/06/16/3138623.html
------解决方案--------------------
大图片秒开缩略图有三种情况,一是已经有缩略图直接读取,二是文件格式支持交叉流并且要处理的图片存储使用了交叉流,三是操作系统缓存了文件内存。否则400M的文件,我的本本读取要20+s。
自己写程序能过处理的仅仅是第二种情况,需要熟悉各种图片文件格式。