我试图计算图像对应用程序的内存使用影响。我正在从字节数组中加载内存中的图像,我注意到内存使用量与图像的大小不成比例。
我有一个96389字节的字节数组,我可以通过以下方式转换为图像:
var actualImage = (Bitmap)((new ImageConverter()).ConvertFrom(bytes));
var actualImage = Image.FromStream(new System.IO.MemoryStream(bytes));
我希望应用程序的内存使用量增加相同的数量,但实际上发生的情况是应用程序的内存增加了17324千字节。
为什么会发生这种情况?如何避免使用太多内存?
答案 0 :(得分:1)
可能会压缩存储在bytes
中的图像。图像不会在Bitmap
类的内存中压缩。如果你想利用这些像素,你无能为力。
答案 1 :(得分:0)
它只是意味着你的原始图片被压缩了。在未压缩的位图表示中,图像使用每个像素4个字节(每个通道一个红色/绿色/蓝色,一个用于alpha通道)。
如何避免使用太多内存?
这取决于你想要做什么。降低图片分辨率,只加载其中的一部分等等......但是如果你需要以原始分辨率显示全部图片,那么就无法减少使用的内存量。