2013-05-23 2 views
2

Я знаю, что уже есть много сообщений об этом, но каждое решение, которое я пробовал до сих пор, не удалось. Я хочу получить Byte[] от объекта Image.Преобразование изображения в ByteArray

То, что я пытался до сих пор:

  • using (MemoryStream ms = new MemoryStream()){/*...*/}(GDI + Exception)
  • Работая над копией image(ArgumentNullException (кодировщик))
  • Следуйте solution from Microsoft(ArgumentNullException (Encoder))
  • Использовать ImageConverter(GDI + Exception)

Что я ожидаю иметь:

public static Byte[] BytesFromImage(Image img) { 
Byte[] imgFile; 
MemoryStream ms = new MemoryStream(); 
img.Save(ms, img.RawFormat); 
imgfile = ms.ToArray(); 
return imgFile; 
} 

Everytime я получаю сообщение об ошибке, это происходит от img.save(ms, img.RawFormat);.

Возможно, это только я, но все решение, которое я следил за StackOverflow, дал мне те же результаты: GDI + Error с таким большим объяснением.

+0

Может быть, вы должны попробовать 'ImageFormat.MemoryBmp'. –

+0

Уже пробовал это, он бросает ArgumentNullException для параметра преобразователя –

ответ

0

Заменить img.RawFormat с ImageFormat.Bmp

Пример:

class Program 
    { 

     public static byte[] BytesFromImage(Image img) 
     { 
      Byte[] imgFile; 
      MemoryStream ms = new MemoryStream(); 
      img.Save(ms, ImageFormat.Bmp); 
      imgFile = ms.ToArray(); 
      return imgFile; 
     } 

     private static void Main(string[] args) 
     { 
      using (Image image = new Bitmap(100, 100)) 
      { 
       byte[] imgArr = BytesFromImage(image); 

       Console.WriteLine("Image size is: {0}", imgArr.Length); 
      } 
     } 
+0

Это должно сработать для вас. Просто попробуйте совместимый тип ImageFormat. –

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