vb.Net怎么快速根据路径生成缩略图,一定要快速
现在又一个项目要求快速扫描U盘上的所有图片,把图片路径放在一个imageList里,然后根据路径生成缩略图分页显示出来。要求速度要快。请大家帮帮忙了。
我的做法是启一个线程扫描U盘,当扫描到100张图片的时候(扫到100张图片还是很快的,几乎U盘一插上去就好。)再启动一个线程开始获取缩略图,不过不知道为什么获取缩略图的速度很慢。不知道大家有什么好的方法可以快速生成缩略图然后显示。
分不多,还请大家帮帮忙。
[解决办法]
快不了,你需要读取大量的文件。
[解决办法]
图片批量缩略图组件(dll),支持asp,asp.net,vb,vb.net等调用
http://www.cnblogs.com/xiaofengfeng/archive/2011/07/29/2121083.html
用:image.GetThumbnailImage 对应小图片 可以很快的获取图像的缩略图。
如果图片尺寸太大,速度也会很慢的。而且模糊哦。
[解决办法]
如果要快速浏览,估计比较困难;
不过你可以自己做一个自定义PictureBox,设置一个进程用来后台加载图片,感觉是会好些,呵呵;不过没有实质改进,而且有可能减慢速度;
[解决办法]
不要启动一个线程来生成缩略图,定义一个thread数组,用GetThumbnailImage获取缩略图。这应该是最快的方法了。
写一个通用函数生成文件的缩略图,然后每一个文件夹下的文件都生成一个thread的数组,同时start.
采用递归方式循环所有目录。
如果用DrawImage的方法可以生成高质量的缩略图,但是速度会比较慢。
[解决办法]
只知道google的Picasa扫描图片是很快的,希望lz能做到他那种效果
[解决办法]
无论是GetThumbnailImage、DrawImage还是其它,都不可能避免对图像的全像素扫描和去冗算法,如果你相信微软程序员的实力,在.Net上也只能这样了,如果你不相信,那只有完全自行设计从读取图像数据(包括解压缩)到去冗缩小的一系列算法
[解决办法]
不要盲目相信多线程能加快速度
如果对于IO处理方面,往往线程越多反而更慢的
特别对于那些IO速度很慢的设备,例如光驱,你开多个线程同时读取文件比你排队读取更慢
因为同时读取系统其实是分时给多个线程的,那样会造成光头/磁头频繁定位,而定位是很慢的