图像对应用程序内存使用的影响
Image impact on application memory usage
我正在尝试计算图像对应用程序的内存使用影响。我正在从字节数组加载图像到内存中,我注意到内存使用量与图像大小不成比例。
我有一个 96389 字节的字节数组,我通过以下方式将其转换为图像:
var actualImage = (Bitmap)((new ImageConverter()).ConvertFrom(bytes));
var actualImage = Image.FromStream(new System.IO.MemoryStream(bytes));
我希望应用程序的内存使用量增加等量,但实际上应用程序的内存增加了 17324 KB。
为什么会发生这种情况,如何避免使用过多内存?
可能,存储在bytes
中的图像被压缩了。图片没有压缩在内存里面Bitmap
class。如果你想利用像素,你无能为力。
这只是意味着你的原始图片被压缩了。在未压缩的位图表示中,图像每个像素使用 4 个字节(一个用于每个通道 red/green/blue,一个用于 alpha 通道)。
How to avoid using too much memory?
这取决于您要做什么。降低图片分辨率,只加载其中的一部分等等...但是如果你需要以原始分辨率显示完整图片,那么就没有办法减少内存使用量了。
我正在尝试计算图像对应用程序的内存使用影响。我正在从字节数组加载图像到内存中,我注意到内存使用量与图像大小不成比例。
我有一个 96389 字节的字节数组,我通过以下方式将其转换为图像:
var actualImage = (Bitmap)((new ImageConverter()).ConvertFrom(bytes));
var actualImage = Image.FromStream(new System.IO.MemoryStream(bytes));
我希望应用程序的内存使用量增加等量,但实际上应用程序的内存增加了 17324 KB。
为什么会发生这种情况,如何避免使用过多内存?
可能,存储在bytes
中的图像被压缩了。图片没有压缩在内存里面Bitmap
class。如果你想利用像素,你无能为力。
这只是意味着你的原始图片被压缩了。在未压缩的位图表示中,图像每个像素使用 4 个字节(一个用于每个通道 red/green/blue,一个用于 alpha 通道)。
How to avoid using too much memory?
这取决于您要做什么。降低图片分辨率,只加载其中的一部分等等...但是如果你需要以原始分辨率显示完整图片,那么就没有办法减少内存使用量了。