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

如何将System.Byte[]转换为映像?(C#窗口窗体),c#,C#,我有一个PictureBox控件,我想在其中显示图像。我使用以下数据类型将图像保存在MS Access数据库中:OLE对象。 我发现很难再把它展示出来。请看一下我的代码,你们能想出一个解决方案吗。我得到了这个异常: Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'. 这是我的密码: OleDbCommand cmd = new OleDbCommand("SELECT IMAGE FROM

我有一个
PictureBox
控件,我想在其中显示图像。我使用以下数据类型将图像保存在MS Access数据库中:
OLE对象
。 我发现很难再把它展示出来。请看一下我的代码,你们能想出一个解决方案吗。我得到了这个
异常

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描述的问题,基本上需要去掉标题。一旦你得到一个只有图像数据的字节数组,使用上面的代码。

但是我不喜欢PictureBox选项??请help@Sanam例如我不知道你的意思。在问题的上下文中,OP有一个pictureBox1变量。我不知道你想做什么,也不知道你的背景。我建议你问一个新问题。我们是不是应该通过
使用
来包围
MemoryStream
,或者至少在设置控件映像后处理实例?@AlexJolig:你不能处理它-
映像。FromStream
拥有流的所有权。处理图像将处理流,但对于
MemoryStream
来说,这并不重要。