C# 如何在内存中存储比普通位图实例更紧凑的图像,并足够快地访问它?

C# 如何在内存中存储比普通位图实例更紧凑的图像,并足够快地访问它?,c#,.net,image,bitmap,ram,C#,.net,Image,Bitmap,Ram,我有5000*4000像素的图像,我在表单上渲染每一帧。 这样加载的图像类似于Bitmap bmp=image.FromFile(“test.png”)使用大约100 mb的RAM,而文件大小是40-50 mb!这样,我的程序已经使用了约500 bm RAM 如何更有效地存储这些图像,但能够足够快地从中切割出零件?我有一个巨大的图像和削减部分,从它来渲染根据视图位置。我以每秒50帧的速度调用render方法,但由于速度太慢,无法从文件中每帧加载图像 是否有其他方法将图像存储在内存中?如果您希望显

我有5000*4000像素的图像,我在表单上渲染每一帧。 这样加载的图像类似于
Bitmap bmp=image.FromFile(“test.png”)使用大约100 mb的RAM,而文件大小是40-50 mb!这样,我的程序已经使用了约500 bm RAM

如何更有效地存储这些图像,但能够足够快地从中切割出零件?我有一个巨大的图像和削减部分,从它来渲染根据视图位置。我以每秒50帧的速度调用render方法,但由于速度太慢,无法从文件中每帧加载图像


是否有其他方法将图像存储在内存中?

如果您希望显示和操作未压缩的图像,则必须将其加载到内存中。这是没有办法的

唯一可靠的方法是降低显示图像的分辨率。每次需要更改压缩后的图像时,您可以将其存储在内存中,并从内存而不是磁盘中解压缩


尽管如此,现在计算机有几GB的RAM可用,500MB的RAM已经不多了。

如果你想显示和操作未压缩的图像,你必须将其加载到内存中。这是没有办法的

唯一可靠的方法是降低显示图像的分辨率。每次需要更改压缩后的图像时,您可以将其存储在内存中,并从内存而不是磁盘中解压缩


尽管如此,现在计算机有几GB的可用内存,500MB的内存已经不多了。

你的意思是像7z一样压缩?@Kosmos-可能吧。或者甚至压缩为png/jpg——任何压缩算法都可以。你的意思是像7z一样压缩?@Kosmos——可能吧。甚至压缩为png/jpg——任何压缩算法都可以。