Winforms 为什么内存中的位图比磁盘上的图像文件大得多?

Winforms 为什么内存中的位图比磁盘上的图像文件大得多?,winforms,bitmap,Winforms,Bitmap,我的磁盘上有一个6MB的映像文件 当我使用 Dim nBmp As Bitmap = Bitmap.FromFile(sPath) 。。。TaskManager显示我的应用程序的已用RAM增加了约200 mb 我可以确认这一点,因为如果我这样做6次左右,RAM将上升到1,2GB,如果进一步尝试这样做,将引发内存不足错误 事实上,有这么多的东西被使用了。 我不再进一步处理这个位图 为什么位图比磁盘上的文件大这么多?您正在加载压缩图像。在你的情况下。Bitmap.FromFile将对其进行解压缩,

我的磁盘上有一个6MB的映像文件

当我使用

Dim nBmp As Bitmap = Bitmap.FromFile(sPath)
。。。TaskManager显示我的应用程序的已用RAM增加了约200 mb

我可以确认这一点,因为如果我这样做6次左右,RAM将上升到1,2GB,如果进一步尝试这样做,将引发内存不足错误

事实上,有这么多的东西被使用了。 我不再进一步处理这个位图


为什么位图比磁盘上的文件大这么多?

您正在加载压缩图像。在你的情况下。
Bitmap.FromFile
将对其进行解压缩,然后将其作为未压缩位图加载到内存中。这需要更多的空间。正如您在评论中所说:6MB为PNG,190MB为位图。

您正在加载压缩图像。在你的情况下。
Bitmap.FromFile
将对其进行解压缩,然后将其作为未压缩位图加载到内存中。这需要更多的空间。正如您在评论中所说:6MB为PNG,190MB为位图。

您正在加载哪种图像?当它是一个压缩文件(如jpeg)时,它将被解压缩并加载到内存中…@feal它是一个PNG。@feal你说得对,谢谢。你能把你的评论作为答案吗?我在GIMP中将图像导出为原始数据,文件大小为190MB,因此您一定是对的,6MB是压缩图像,190MB是未压缩数据。您正在加载哪种图像?当它是一个压缩文件(如jpeg)时,它将被解压缩并加载到内存中…@feal它是一个PNG。@feal你说得对,谢谢。你能把你的评论作为答案吗?我在GIMP中将图像导出为原始数据,文件大小为190MB,因此您一定正确地认为6MB是压缩图像,而190MB是未压缩数据。