我有一个 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/