C# 如何从存储在数据库中的 OLE 对象中保存图像

Posted

技术标签:

【中文标题】C# 如何从存储在数据库中的 OLE 对象中保存图像【英文标题】:C# How to save image from an OLE Object stored in a Database 【发布时间】:2011-07-14 15:24:37 【问题描述】:

当它作为 OLE 对象嵌入到访问数据库中时,标题字节似乎与图像一起存储,并且它们阻止我将存储的字节写入磁盘,因为它引发异常“GDI+ 中发生一般错误” .'

如何从存储在 access 数据库中的 OLE 对象中仅提取图像字节,然后保存到磁盘?

photo = ((rs.Fields["photo"].Value == System.DBNull.Value) ? 
    null : (byte[])rs.Fields["photo"].Value)

...

if (photo != null)

    MemoryStream stream = new MemoryStream(photo);
    Image image = new Bitmap(stream);
    stream.Close();

    image.Save(@"C:\Temp\images\test", ImageFormat.Jpeg);
 

【问题讨论】:

【参考方案1】:
using (MemoryStream stream = new MemoryStream(photo))
using (Image image = Image.FromStream(stream))

    image.Save(@"C:\Temp\images\test.jpg", ImageFormat.Jpeg);

【讨论】:

@Nicholas Murray 和 using 正确处理 IDisposable 资源,例如流和 GDI 对象(例如图像)。

以上是关于C# 如何从存储在数据库中的 OLE 对象中保存图像的主要内容,如果未能解决你的问题,请参考以下文章

用 C# 读取 OLE 对象

从剪贴板保存 OLE 对象

在 Visual Studio C# 中从 MS Access 数据库中获取 OLE(位图)对象,我的代码有啥问题?

从 DataTable C# 添加到 OLE 类型表

从 C# 如何调用需要 *VARIANT 参数的非托管 OLE 接口?

在我的应用程序中显示 Microsoft Access“OLE 对象”