2014-01-28 2 views
4

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

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

это функция:

public static byte[] ImageToByte(Image img) 
    { 
     ImageConverter converter = new ImageConverter(); 
     return (byte[])converter.ConvertTo(img, typeof(byte[])); 
    } 

это работает отлично.

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

аргумент исключение было необработанное Параметр не является допустимым.

Я попробовал две функции, чтобы преобразовать массив байтов в изображение:

public static Image ImageFromByte(byte[] image) 
    { 
     ImageConverter ic = new ImageConverter(); 
     Image img = (Image)ic.ConvertFrom(image);//here the exception comes 
     return img; 
    } 

ИЛИ:

public static Image ImageFromByte1(byte[] byteArrayIn) 
    { 
     MemoryStream ms = new MemoryStream(byteArrayIn); 
     Image returnImage = Image.FromStream(ms);//here the exception comes 
     return returnImage; 
    } 

В чем проблема, как исправить это?

+0

Как вы помещаете в базу данных в первую очередь? –

+0

Я редактировал вопрос, смотри. –

+0

Если вы пишете тест для кода и протестируете его с помощью некоторого действительного растрового изображения, например. файл или тот, который вы только что составили, тогда у вас будет лучшая идея. Я могу придумать несколько способов положить его или вытащить из db, возможно, пошел соски. –

ответ

1

Попробуйте сохранить изображение на диск и посмотреть, работает ли оно. Измените имя файла и расширение по своему усмотрению.

Что-то вдоль этих линий:

  string path = @"c:\myimage.jpg"; 
      using (MemoryStream inputStream = new MemoryStream(byteArrayIn)) 
      { 
       using (Stream file = File.Create(path)) 
       { 
        byte[] buffer = new byte[8 * 1024]; 
        int len; 
        while ((len = inputStream.Read(buffer, 0, buffer.Length)) > 0) 
        { 
         file.Write(buffer, 0, len); 
        } 
       } 
      } 

EDIT: Запись образа на диск работает, и я думаю, вы можете увидеть изображение. Попробуйте это:

  using (MemoryStream inputStream = new MemoryStream(byteArrayIn)) 
      { 
       using (var image = Image.FromStream(inputStream)) 
       { 
        // see if this works. 
        // handle the image as you wish, return it, process it or something else. 
       } 
      } 
+0

Это работает! ..... –

+0

Что делать дальше ??? –

+0

@ KaramNajjar - Сделайте версию в нижней части работы? – scheien

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