将位图保存到内存流中

39

我应该分配内存还是只需分配内存流的对象:

这样做可以吗?

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

如果我需要定义MemoryStream的大小,我该如何从Bitmap获取它?


3
没问题,你有遇到特定的问题吗? - Pieter van Ginkel
2个回答

21

.NET是一个托管环境:具体而言,通常由.NET运行时代表您管理内存分配。您通常不需要自己分配内存。

但有时候,您需要通过使用Close()Dispose()告诉运行时您已经完成了内存的使用。可以使用using语句来包装资源,如MemoryStream,以通知运行时内存可以被回收。


谢谢, 现在我觉得很清楚了。 我计划在工作期间将流保存在我的类中,但似乎我应该只在处理过程中保存它,而不是在我的应用程序一直运行时保留它。我认为将图片保存为MemoryStream而不是Bitmap更好。 - Joseph

7

无需预先分配内存。

您可以使用 memoryStream.Length 在之后获取大小。


完成对 memoryStream 的操作后,请务必将其释放(或将其全部包装在 using 语句中)。


谢谢, 现在我觉得很清楚了。 我计划在工作期间将流保存在我的类中,但似乎我应该只在处理过程中保存它,而不是一直保持我的应用程序处于活动状态。我认为将图片保存为MemoryStream而不是Bitmap更好。 - Joseph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接