Исключение сжатия изображения в памяти при получении байтового массива из образа - PullRequest
0 голосов
/ 23 декабря 2009

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

Тот же код работает нормально, если я не делал этого "в сжатии памяти", но он мне действительно нужен для экономии памяти.

Спасибо

1 Ответ

0 голосов
/ 23 декабря 2009

Моя ошибка, я никогда не должен был звонить:

ms.Dispose();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...