我有一个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"];
}
答案 0 :(得分:28)
最简单的方法是使用MemoryStream
并致电Image.FromStream
:
byte[] data = (byte[]) dt.Rows[0]["IMAGE"];
MemoryStream ms = new MemoryStream(data);
pictureBox1.Image = Image.FromStream(ms);
编辑:如果遇到汉斯描述的问题,你基本上需要删除那个标题。一旦 得到一个只有图像数据的字节数组,就可以使用上面的代码。