我花了相当多的时间尝试从SQLite中检索图像,但我已经失败了。如果有人可以帮助我解决我在这里做错的事情,那将非常感激。下面是我用来检索存储在SQLite中的BLOB图像的代码。
SQLiteConnection con = new SQLiteConnection(Properties.Settings.Default.conString);
con.Open();
SQLiteCommand cmd = new SQLiteCommand("SELECT ImageFiles FROM basicconcepts WHERE id=1",con);
SQLiteDataReader reader=cmd.ExecuteReader();
byte[] imageBytes=null;
while (reader.Read())
{
imageBytes = (System.Byte[])reader["ImageFiles"];
}
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
ms.Write(imageBytes, 0, imageBytes.Length);
pictureBox1.Image = Image.FromStream(ms, true);
这是我得到的错误的堆栈跟踪
System.ArgumentException was caught
Message=Parameter is not valid.
Source=System.Drawing
StackTrace:
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement)
at WindowsFormsApplication1.frmMain.getPDF(String c_Name, Int32 pgNo) in C:\Users\Tanmay\Documents\My Projects\E-Excust\E-Excust\E-Excust\frmMain.cs:line 148
InnerException:
PS上面的代码在getPDF方法中。
修改
我找到了解决问题的方法。问题是,令人惊讶的是我正在使用的sql管理工具。我强烈建议不要使用sqlite管理员来检索BLOB图像。 我开始使用SQLite Expert,一切都很好。无法相信我在这一整天都绞尽脑汁 谢谢大家的帮助,特别是那些没有在这里回答过但在聊天方面给我很多帮助的人。非常感谢usernane,yas4891,SomeGuy和其他几个人
答案 0 :(得分:0)
从数据库byte[]
read the binary data后,你可以简单地:
var ms = new MemoryStream(imageBytes);
pictureBox1.Image = Image.FromStream(ms, true);