2012-03-26 2 views
1

У меня возникли проблемы с приведенным ниже кодом для преобразования двоичного источника в растровое изображение, чтобы вставить его в мое изображение. Я получаю «Параметр недействителен».Преобразование двоичного изображения в растровое изображение для imagelist. Ошибка кода

// Retrieving data from Database 
private void Form1_Load(object sender, EventArgs e) 
    { 
     vcon.Open(); 
     string get = "Select Path, Images FROM IMGSTR"; 
     OleDbCommand cmdget = new OleDbCommand(get, vcon); 
     OleDbDataReader reader; 
     reader = cmdget.ExecuteReader(); 

     while (reader.Read()) 
     { 
      string path = reader["Path"].ToString(); 

      //here is where I am receiving an error 
      this.imageList1.Images.Add(Image.FromStream(new MemoryStream((byte[]) reader["Images"]))); 


      //creates rows in my listview to display images 
      Graphics theGraphics = Graphics.FromHwnd(this.Handle); 
      int count = this.listView1.Items.Count; 
      for (; count < this.imageList1.Images.Count; count++) 
      { 
       listView1.Items.Add("", count); 
      } 


     } 



    //Add Photos and Path to Database 
    private void importImagesToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     FolderBrowserDialog dig = new FolderBrowserDialog(); 

     if (dig.ShowDialog() == DialogResult.OK) 
     { 
      MessageBox.Show("This May take a while. Depending on the size and amount of your photos. Click Ok to continue", "! ! !"); 
      foreach (String files in Directory.GetFiles(dig.SelectedPath)) 
      { 
       if (files.EndsWith(".JPG")) 
       { 
        //convert .jpg to thumbnail 
        Image image = new Bitmap(files); 
        Image pThumbnail = image.GetThumbnailImage(100, 100, null, new IntPtr()); 

        //Insert Path and Image into database 
        string cmdstr = "INSERT into IMGSTR(Path, Images) values(path, image)"; 
        OleDbCommand com = new OleDbCommand(cmdstr, vcon); 
        com.Parameters.AddWithValue("path", files); 

        //Storing Image into MS database as Ole Object 
        com.Parameters.AddWithValue("image", pThumbnail); 

        com.ExecuteNonQuery(); 

        image.Dispose(); 
       } 
      } 
     } 

может кто-нибудь помочь мне понять, почему я получаю эту ошибку. Я новичок в программировании и не понимаю, почему я сам.

ответ

0
//you are casting the blob from pulled from the db to a byte array 
while(reader.Read()) 
{ 
    this.imageList1.Images.Add(Image.FromStream(
     new MemoryStream((byte[] reader["Images"]) 
} 

Но в моем опыте, изображения, как правило, хранятся на сервере, и добавить путь (ссылка) на файл в базе данных, как добавление блобы и читать его обратно очень тяжелые операции для база данных.

+0

У меня действительно есть этот код. но окно отключило его. Полоса прокрутки покажет остальное. –

+0

, то я думаю, проблема в том, что вы на самом деле не указываете изображение, вам нужно прокрутить каждое изображение, которое вы выбрали из своей базы данных. –

+0

Я теперь модифицировал код, теперь он будет работать для вас. –

Смежные вопросы