首页 >后端开发 >C++ >将图像保存到封闭的 MemoryStream 时如何避免 GDI 异常?

将图像保存到封闭的 MemoryStream 时如何避免 GDI 异常?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-16 20:46:15975浏览

How to Avoid GDI  Exceptions When Saving Images to a Closed MemoryStream?

GDI 中 Image.Save() 的内存流关闭问题

问题:

使用 Image 保存图像时.Save(...) 使用内存流,如果在保存之前关闭内存流,开发人员可能会遇到 GDI 异常。但在动态图像创建场景下,保存前需要关闭流。

代码场景:

Bitmap image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
    image2 = new Bitmap(originalBinaryDataStream2);
}

此场景下,内存流originalBinaryDataStream2被关闭当退出 using 块时。随后,保存图像image2会导致GDI异常。

解决方案:

由于内存流不需要显式关闭,因此无需手动关闭它们。不过,关闭 Bitmap 对象会自动关闭关联的内存流。

Bitmap image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
    image2 = new Bitmap(originalBinaryDataStream2);
}

image2.Dispose(); // Also closes the memory stream

通过处理 Bitmap,正确关闭内存流,确保图像能够无异常地保存。

以上是将图像保存到封闭的 MemoryStream 时如何避免 GDI 异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn