Проблемы с извлечением изображений из SQLite в C # - PullRequest
1 голос
/ 12 сентября 2011

Я потратил значительное время, пытаясь получить изображения из SQLite, но у меня ничего не вышло.Если бы кто-нибудь мог помочь мне с тем, что я делаю здесь неправильно, это было бы очень признательно.Ниже приведен код, который я использую для получения BLOB-изображения, хранящегося в SQLite.

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.

EDIT

Я нашел решение для моей проблемы.Проблема была, довольно удивительно, инструмент администрирования SQL, который я использовал.Я настоятельно рекомендую не использовать администратор sqlite для получения изображений BLOB.Я начал использовать SQLite Expert, и все стало работать нормально.Не могу поверить, что я ломал голову над этим целый день. Спасибо всем за помощь, особенно парням, которые не ответили здесь, но очень помогли мне в чате.большое спасибо usernane, yas4891, SomeGuy и нескольким другим

1 Ответ

0 голосов
/ 12 сентября 2011

Как только вы прочитаете двоичные данные из вашей базы данных как byte[], вы можете просто:

var ms = new MemoryStream(imageBytes);
pictureBox1.Image = Image.FromStream(ms, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...