web-dev-qa-db-fra.com

Enregistrement d'une image bitmap dans un MemoryStream

Dois-je allouer la mémoire ou simplement l'objet du flux mémoire: est-ce OK?

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

Si je dois définir la taille de MemoryStream, comment puis-je l'obtenir à partir de Bitmap?

25
Joseph

.NET est un environnement géré: en particulier, l'allocation de mémoire est généralement gérée en votre nom par le runtime .NET. Vous n'avez généralement pas besoin d'allouer la mémoire vous-même.

Parfois, cependant, vous devez informer le runtime lorsque vous avez terminé avec de la mémoire en utilisant Close() ou Dispose(). L'instruction using peut être utilisée pour encapsuler une ressource telle que MemoryStream pour indiquer au runtime que la mémoire peut être récupérée.

15
Jeremy McGee

Vous n'avez pas besoin de préallouer de la mémoire.

Vous pouvez ensuite obtenir la taille avec memoryStream.Length.


Après avoir fait ce dont vous avez besoin avec votre memoryStream, assurez-vous de le disposer (ou de tout envelopper dans une instruction using).

6
George Duckett