从SQLite检索图像到c#的问题
本文关键字:问题 图像 SQLite 检索 | 更新日期: 2023-09-27 18:08:16
我花了相当多的时间试图从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专家,一切都开始正常工作。真不敢相信我一整天都在为这件事绞尽脑汁感谢所有人的帮助,特别是那些没有在这里回答,但在聊天中帮助了我很多的人。非常感谢username, yas4891, SomeGuy和其他一些人一旦您从数据库中读取二进制数据作为byte[]
,您可以简单地:
var ms = new MemoryStream(imageBytes);
pictureBox1.Image = Image.FromStream(ms, true);