C# 显示大量图片时太耗内存,怎么解决

www.zhiqu.org     时间: 2024-05-13
预加载略缩图,然后大图属性可以存到数组里面
当点到右边的略缩图的时候,根据Key找到大图属性加载这个大图,换图后释放掉.不要同时存几个大图到内存就行了,只存它的属性.

Acdsee有缓存数据库,也就是说第一次显示图片时(或者说你要在acdsee中查看一个文件夹时),会同时生成一张缩略图,将同一目录下的所有的缩略图保存在一个数据库中(虽然没研究过,但估计它同时存有文件的大小和修改时间),下次再打开软件要显示这张图时,会先从缩略图库中来读取图像(系统本身也有类似的机制来保证文件夹中缩略图的快速显示),这样就避免了去读取原来的大的图像文件。另外acdsee的并不会同时显示所有缩图,而是仅显示窗口内的缩图。

以一屏可以显示的数量为限,显示不下的图片不事先加载,待滚动条滚动时,加载进入屏幕的新图片,释放移出屏幕的图片.
没实际测试过,如果觉得可行,自己测试一下.

用图片为什么总是显示存储不足?~

如果是诺基亚手机的话
别的方法不行就用 格机试试,输入*#7370#然后输入12345密码

注意:电池要充足

名字个性。。问题更个性。。。偶喜欢。。。
搞破坏啊。。。
看哪个广告公司不顺眼还是怎么着啊。。。。
想折磨自己的爱机么?。。。
。。。。

多行不义必自b。。。。


#彭奚敬# C# 取色器无限吃内存或者如何清空内存? -
(15680347424): 我给你一个思路:你在取色前先进行一次抓屏.然后把这个作为一个图片放在内存中.然后以当前鼠标的屏幕位置转换到图片的相应像素上去.想取什么,在图片上取

#彭奚敬# c# 大数组内存溢出 我写了一段代码,是把图像的每个像素点的ARGB值输入到另一个窗口Richtextbox中去, -
(15680347424): 内存溢出?还涉及到了堆栈?您的做法是否有递归什么之类的?怎么会给堆栈里面塞了大批量的东西呢?当然如果你的算法确实涉及到了给堆栈存储数据也不是不对的.但是如果出现内存溢出,请尝试用.NET自带的性能监视器查看一下具体的原因 这样会能找到具体的触发点.如果有了这个触发点.就好办了.另外如果很确定了有递归之类的直接入栈的东西.那么请尝试自行编写栈规则.用纯内存替代栈.

#彭奚敬# C# XDocument XML文件很大时,怎么减小内存占用!
(15680347424): 既然使用了document对象,就无法减小内存占用,如果你无法接受这个内存,就只能舍弃使用xdocument,而采用纯文本的形式,就是把所有xml当成string来处理,分段写入文件

#彭奚敬# C#画图怎样使图片显示流畅 -
(15680347424): 感觉只能这样,我也常在想这个问题,一般就是把image放内存里,变换后重新赋值给picturebox,还有就是用2个picturebox,换着显示

#彭奚敬# C#程序怎么控制内存? -
(15680347424): 不用的数据尽量及时销毁,以收回内存占用.如果调用了COM组件、数据库等,那就及时关闭以避免资源泄漏.其实.net程序占用内存比较正常,如果确定没有泄漏的地方可以不用理会.这里有个治标不治本的方法,使用API来减少内存占用:...

#彭奚敬# Winform 显示图片时 提示内存不足 以前好好的 另一个项目也好好的 -
(15680347424): 这个肯定不是内存的问题,应该是文件名或者文件内容的问题.最好在你上面的调试状态下鼠标移到文件名上,看文件名,复制,并在windows资源管理器里打开看看.

#彭奚敬# c# winform .net 我想做一个窗体 然后在窗体上显示某个文件夹中的所有图片 -
(15680347424): 用Listview+imagelist做,获取文件夹下所有图片 然后绑定到imagelist 上面 再把Listview跟imagelist绑定好 就行了. 不过这样做问题很大. 做法:1.获取文件夹下所有图片路径 循环用imagelist.image.add这个方法绑到imagelist上2.设置Listview的...

#彭奚敬# c#操作大的文本文件 -
(15680347424): 不如先全部读入到一个数组里,统一处理,处理完后一次写入 这样可以减少文件读写操作次数 最好新开一个线程在后台做这些操作,这样不会影响到前台界面等一些其他操作,可以从后台线程返回一个进度用来监视.100M的东西处理速度不会...

#彭奚敬# C# graphics图像复制时提示内存不足
(15680347424): 下面的代码创建了Graphics对象,但是没有释放 ((Form1)(Form1.fcLED.wF1)).panel1.CreateGraphics().DrawImage(fcLED.bMap, x, 1)

#彭奚敬# winform PictureBox 显示目录下的图片太费内存 -
(15680347424): 给picturebox指定新图片前,要主动释放旧图片占用的内存 (vb代码) If Not (Me.PictureBox1.Image Is Nothing) Then PictureBox1.Image.Dispose() PictureBox1.Image = NothingEnd IfC# if ((this.PictureBox1.Image != null)) { PictureBox1.Image.Dispose(); PictureBox1.Image = null;}