2011-12-29 21 views
18

¿Debo asignar la memoria o solo el objeto de la secuencia de memoria? ¿Está bien?Guardar un mapa de bits en un MemoryStream

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

Si necesito definir el tamaño de MemoryStream, ¿cómo puedo obtenerlo de Bitmap?

+3

Esto debería estar bien; ¿estás experimentando problemas específicos? –

Respuesta

12

.NET es un entorno administrado: específicamente, la asignación de memoria generalmente se gestiona en su nombre por .NET runtime. Normalmente no necesita asignar la memoria usted mismo.

A veces, sin embargo, necesita informar el tiempo de ejecución cuando haya terminado con la memoria usando Close() o Dispose(). La instrucción using se puede usar para envolver un recurso como MemoryStream para indicarle al tiempo de ejecución que la memoria puede recuperarse.

+0

Gracias, Ahora creo que está claro. He planificado guardar la transmisión en mi clase durante el trabajo, pero parece que debo guardarla solo durante el proceso y no guardarla todo el tiempo que mi aplicación esté activa. Pensé que es mejor guardar la imagen como memorystream en lugar de Bitmap. – Joseph

6

No es necesario preasignar la memoria.

Puede obtener el tamaño después con memoryStream.Length.


Después de haber hecho lo que necesita con su memoryStream, asegúrese de deshacerse de él (o envolverlo todo en un comunicado using).

+0

Gracias, Ahora creo que está claro. He planificado guardar la transmisión en mi clase durante el trabajo, pero parece que debo guardarla solo durante el proceso y no guardarla todo el tiempo que mi aplicación esté activa. Pensé que es mejor guardar la imagen como memorystream en lugar de Bitmap. – Joseph

Cuestiones relacionadas