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

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

Mary-Kate Olsen
发布: 2025-01-16 20:46:15
原创
972 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板