如何将System.Byte []转换为Image?(C#窗口形式)

yon*_*236 8 c#

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

Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'.
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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"];
            }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 28

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

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

编辑:如果你遇到汉斯描述的问题,你基本上需要删除该标题.一旦你已经有了一个字节数组中带刚的图像数据,使用上面的代码.

  • 无法使用,Access会为图像数据添加标题. (2认同)