C#显示图像(在运行时与加载时)

时间:2016-12-18 01:15:37

标签: c# image winforms

我的应用程序允许用户一次查看一个图像。 有2个按钮(“上一个”和“下一个”),因此用户可以循环浏览图像。 Image路径以XML格式存储。

当App加载时,我可以为每个图像创建变量var myImage = Image.FromFile(path),并将每个图像添加到图像列表,并在用户按下上一个或下一个时使用{{1}从列表中检索}

..或..只存储字符串列表中图像的路径,并使用myImageBox.Image = List_Images[x];

从列表中检索路径

由于用户可能在图像中来回循环,我想知道将所有图像存储为图像变量与将路径存储为字符串之间可能存在的性能问题。每按一次按钮,使用Image.FromFile()会更慢吗?或者存储300-500个图像会成为更大的内存问题吗?

[图像分辨率不同,300像素宽,250像素高]

1 个答案:

答案 0 :(得分:0)

如果您的应用程序在x86计算机上运行,​​则进程地址空间最大为2gig。这是你如何达到门槛的基本开始。

图像/位图是一种非托管资源,因此您必须使用"使用"或明确地为每个资源配置,内存太多并不是一件好事。它们不像存储在线程堆栈中的值类型或存储在托管堆中的引用类型。

如果有大约50张3mb图像,我想我会考虑缓存(特别是如果它们是视频中的帧,向后导航是一种非常常见的操作),否则我会从磁盘加载。这些天大多数PC都带有SSD,这几乎就像从RAM加载一样。

你可以写一些基准测试,最终用户milage会有所不同。如果300-500是常数且PC规格是变量,则更好的方法是从磁盘加载。