У меня есть растровый объект, который занимает огромную часть памяти во время выполнения, я хочу сжать его (формат 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 - это то же изображение, сохраненное в предыдущем коде.
но я получаю исключение GDI +:
[В GDI + произошла общая ошибка.]
Тот же код работает нормально, если я не делал этого "в сжатии памяти", но он мне действительно нужен для экономии памяти.
Спасибо