Сохранение растрового изображения в MemoryStream - PullRequest
25 голосов
/ 29 декабря 2011

Должен ли я выделять память или просто объект потока памяти: Это нормально?

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

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

Ответы [ 2 ]

15 голосов
/ 29 декабря 2011

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

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

6 голосов
/ 29 декабря 2011

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

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


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

...