如何将System.Byte 转换为Image? (C#窗口forms)
我有一个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);
编辑:如果你遇到汉斯描述的问题,你基本上需要删除该标题。 获得一个只包含图像数据的字节数组后,请使用上面的代码。