当前位置:编程学习 > VB >>

[问]VB读取大图像时速度过慢的问题 100分

显示图片用picture 读取100m左右bmp图像时速度很慢
高手解决  在线等  测试通过马上结贴  过程请尽量详细~急需~
谢谢 --------------------编程问答-------------------- 各位帮忙啊~  急用 --------------------编程问答-------------------- 各位帮忙啊~  急用
--------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 100m的图片,无论你用什么读都慢
还没见过这么大的图片。 --------------------编程问答-------------------- 这么大的图片,怎么读都快不了。 --------------------编程问答-------------------- 你的有多慢?你想要多快?
你用一些优秀的看图软件打开这个100M的图像看看与你的要求有多少距离?然后再考虑你是程序是否有问题! --------------------编程问答-------------------- 不好意思  表达有问题
背景是一个PICTUREBOX  作为容器   
PICTUREBOX上面有很多个IMAGE控件   要做成类似WINDWOS缩略图的形式
大概5M大小的图片   20张左右的时候  大概要30秒左右才能显示出来 速度很慢
请问大家有什么好的解决方法吗   什么格式的都有BMP JPG。。。

-_-b --------------------编程问答-------------------- 5M的图片也是很大的了,加载速度慢是没办法的
loadpicture是很快的了
--------------------编程问答-------------------- 但是windows预览 5M图像的时候 速度是很快的
我就想做到WINDOWS的效果
现在发现有图片的文件夹下面  会有一个Thumbs.db 文件  是不是windows把缩略图都放到这里了?大家帮帮阿 --------------------编程问答-------------------- 顶一下 --------------------编程问答-------------------- Windows第一次也不是很快的,是再打开才快的
你可以考虑把缩略图存储成文件的方式,下次读就读你存储的缩略图文件 --------------------编程问答-------------------- [url=http://blog.csdn.net/downmoon/archive/2009/06/04/4241315.aspx ][/url] --------------------编程问答-------------------- [url=http://blog.csdn.net/downmoon/archive/2009/06/04/4241315.aspx ][/url] --------------------编程问答-------------------- 开玩笑,100M的图片,你就是直接打开都要很久。 --------------------编程问答-------------------- 把原图切割成若干小图,先load前几张显示,后台load其他图片 --------------------编程问答-------------------- 用PHOTOSHOP作切片,再一张张显示,类似网页上的大图片打开的原理 --------------------编程问答--------------------
引用楼主 sasir 的回复:
显示图片用picture   读取100m左右bmp图像时速度很慢
高手解决     在线等     测试通过马上结贴     过程请尽量详细~急需~
谢谢

如果你能确定只是BMP格式,我有一个思路,可以让你读取速度提高.

具体:

先取得你要显示的那个图片框的大小,然后计算象素值,从BMP里面提取所需要显示那些象素即可.

也就是说,有个图是1280X1024的,而你的缩略图是128X102的,那就读的时候,X方向在原图中每9象素才读入,Y也是.

这样的话总共需要读取的象素与要显示的图象的象素是相符合的,怎么样也慢不了了.

但此思路有个缺点,就是需要了解被读取图象的格式.

而你的情况是BMP,那就简单很多了,几百兆也不成问题,哈. --------------------编程问答-------------------- 这思路ACDSEE等软件估计也有想过,但是数以千记的文件格式肯定会巨头痛,因此没使用这招吧. --------------------编程问答-------------------- 保存缩略图就可以了。

看看 Windows 怎么做的:
1)将窗口调整成一次显示10左右张缩略图的大小。
2)先切换成普通的视图,将图片文件反复复制,大约100个左右就可以了。
3)删除 Thumbs.db。
4)再切换成“缩略图”视图:
如果图片文件够大,你会发现先显示几个方框,然后缩略图逐个显现;
5)马上拖动到窗口底部,也是先显示几个方框,然后缩略图逐个显现;
6)马上拖动到中间部分,也是先显示几个方框,然后缩略图逐个显现;
7)等足够的时间(硬盘灯不闪了),随意滚动窗口都能立即看到缩略图。

是在第一次时生成缩略图,生成次序默认按照排列的文件次序,如果有浏览的需要,会将当前浏览的缩略图生成次序提到前面来。

--------------------编程问答-------------------- 100M的图片,光数据量就是一个问题, 想象一下光是把这么一个文件读进内存就应该是不短的时间了吧.

不过楼主的图片格式是BMP, 还是有一点机会提高显示速度的.
楼主需要针对BMP文件格式作分析, 再从楼主的图片尺寸来开,应该是24位色的真彩图片. 
像素值约为3千万. 已经远超过一般显示器能显示的大小了.
因此楼主可以从BMP数据区截取需要显示的那一部分数据,再把他们画到PICTURE控件上去.
至于如何截取,是将图片分块显示,还是跳着读数据将图片缩小显示,那就得靠楼主自己手工代码了.
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,