[英]retrieve image from access database using c#
我正在使用以下代码将二进制格式的图像添加到ms Access数据库。 我存储此图像的数据库中的字段数据类型是OLE Object
。
reader [“ Photo”]的值如下
(byte[])reader["Photo"] {byte[26]}
byte[] [0] 83 byte [1] 0 byte [2] 121
byte [3] 0 byte [4] 115
byte [5] 0 byte [6] 116
byte [7] 0 byte [8] 101
byte [9] 0 byte [10] 109
byte [11] 0 byte [12] 46
byte [13] 0 byte [14] 66
byte [15] 0 byte [16] 121
byte [17] 0 byte [18] 116
byte [19] 0 byte [20] 101
byte [21] 0 byte [22] 91
byte [23] 0 byte [24] 93
byte [25] 0 byte
private byte[] imageToByteArray()
{
//Store the profile image to the database in binary format
MemoryStream ms = new MemoryStream();
pbProfilePic.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] Pic_arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(Pic_arr, 0, Pic_arr.Length);
return Pic_arr;
}
现在,借助以下代码,我将从数据库中检索此图像。
OleDbCommand cmd = new OleDbCommand("select * from Employees where EmpId=" + datarecordId + "", conn);
OleDbDataReader reader = cmd.ExecuteReader();
pbProfilePic.Image = byteArrayToImage((byte[])reader["Photo"]);
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
但是,我在Image returnImage = Image.FromStream(ms);
处收到以下错误Image returnImage = Image.FromStream(ms);
附加信息:参数无效。
任何人都可以帮助我解决这个错误。
谢谢。
我正在使用以下代码将图像以二进制格式存储到MS Access数据库
private byte[] imageToByteArray()
{
//Store the profile image to the database in binary format
MemoryStream ms = new MemoryStream();
pbProfilePic.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] Pic_arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(Pic_arr, 0, Pic_arr.Length);
return Pic_arr;
}
您可以尝试以下方法:
public Image byteArrayToImage(byte[] byteArrayIn)
{
Image retval = null;
using (MemoryStream stream = new MemoryStream(byteArrayIn))
{
retval = (Image)new Bitmap(stream);
}
return retval;
}
而且,正如methodMan所说,调试器告诉您什么? byteArrayIn的值是什么? MemoryStream是否已正确初始化?
如果我只是从随机字符串中创建一个byte []并使用byteArrayToImage,则会遇到相同的错误。 问题是您的原始图像数据不正确。
我尝试在PictureBox上使用您的方法(imageToByteArray和byteArrayToImage)嵌入了jpg作为图像,并且它运行时没有错误,都转换为byte [],然后转换为Image。 听起来好像有些东西损坏了图片框中的原始数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.