c# - 如何将 System.Byte[] 转换为图像? (C# 窗口窗体)

标签 c#

我有一个 PictureBox 控件,我想在其中显示图像。我使用以下数据类型将图像保存在 MS Access 数据库中:OLE Object。 我发现很难再次显示它。请看看我的代码,你们能不能为它设计一个解决方案。我得到了这个Exception:

Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'.

这是我的代码:

OleDbCommand cmd = new OleDbCommand("SELECT IMAGE FROM IMAGES WHERE ID = 1", myConn));
            cmd.CommandType = CommandType.Text;
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataTable dt = new DataTable("dt");
            da.Fill(dt);

            if (dt != null)
            {              
                pictureBox1.Image = (Image)dt.Rows[0]["IMAGE"];
            }

最佳答案

最简单的方法是使用 MemoryStream 并调用 Image.FromStream:

byte[] data = (byte[]) dt.Rows[0]["IMAGE"];
MemoryStream ms = new MemoryStream(data);
pictureBox1.Image = Image.FromStream(ms);

编辑:如果您遇到 Hans 描述的问题,您基本上需要删除该 header 。一旦您获得了一个仅包含图像数据的字节数组,请使用上面的代码。

关于c# - 如何将 System.Byte[] 转换为图像? (C# 窗口窗体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440366/

相关文章:

c# - 列出 View 中ViewBag的内容

c# - 在 MVC 应用程序中使用定时器

c# - Scala 中 C# 事件的惯用等价物是什么

c# - 从网络下载图像并存储在媒体库中 (windows phone 8)

c# - 如何在 EF Core 多对多关系中对删除进行建模?

c# - 插入记录时 Informix "no such DBspace"错误

c# - 使 GetRawInputDeviceInfo 和 RIDI_DEVICEINFO 与 C# 一起工作

C# 将 linq 列表 (int) 项更改为 (string)

c# - 有人怎么能像 Java 一样制作 C# 增量编译器?

c# - 媒体基础: Writing G711 PCMU to mp4