2011-12-29 2 views
18

Должен ли я выделить память или просто объект в потоке памяти: В порядке?Сохранение растрового изображения в MemoryStream

MemoryStream memoryStream = new MemoryStream(); 
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg); 

Если мне нужно определить размер MemoryStream, как я могу получить его из Bitmap?

+3

Это должно быть прекрасно; вы испытываете особые проблемы? –

ответ

12

.NET - это управляемая среда: в частности, распределение памяти обычно управляется от вашего имени средой выполнения .NET. Обычно вам не нужно выделять память самостоятельно.

Иногда, однако, вам нужно сообщить время выполнения, когда вы закончили с памятью, используя Close() или Dispose(). Оператор using может использоваться для обертывания ресурса, такого как MemoryStream, для указания времени выполнения, которое память может быть исправлена.

+0

Спасибо, Теперь я думаю, что это ясно. Я планировал сохранить поток в своем классе во время работы, но мне кажется, что я должен сохранить его только во время процесса, а не держать его все время, когда мое приложение будет жить. Я подумал, что лучше сохранить изображение в качестве запоминающего элемента вместо растрового изображения. – Joseph

6

Вам не нужно выделять память.

После этого вы можете получить размер memoryStream.Length.


После того, как вы сделали то, что вам нужно с memoryStream, обязательно утилизировать его (или обернуть все это в using заявлении).

+0

Спасибо, Теперь я думаю, что это ясно. Я планировал сохранить поток в своем классе во время работы, но мне кажется, что я должен сохранить его только во время процесса, а не держать его все время, когда мое приложение будет жить. Я подумал, что лучше сохранить изображение в качестве запоминающего элемента вместо растрового изображения. – Joseph

Смежные вопросы