【发布时间】:2009-12-23 20:05:05
【问题描述】:
我有一个位图对象,它在运行时占用了很大一部分内存,我想在内存中压缩它(JPEG 格式),然后再使用它。我正在使用它进行压缩:
MemoryStream ms = new MemoryStream();
oBmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
oBmp.Dispose();
oBmp = null;
Image ResultImg = Image.FromStream(ms);
ms.Dispose();
ms = null;
我不知道这是否真的节省了一些内存,或者当我从流中加载图像时一切都恢复到正常的内存消耗。
无论如何,我稍后会尝试从此图像中获取字节数组,我正在使用:
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
其中 ImageIn 是前面代码中保存的同一个 Image。 但我得到一个 GDI+ 异常: [GDI+ 中出现一般错误。]
如果我没有在“内存压缩”中执行此操作,相同的代码也可以正常工作,但我确实需要它来节省内存。
谢谢
【问题讨论】: