2012-06-05 2 views
3

я это:TypeConverter преобразовать байт [] в растровое изображение

byte[] ar = new byte[ArrayAnsammlung[DurchLaeufer].Length]; 
ArrayAnsammlung[DurchLaeufer].CopyTo(ar, 0); 
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap)); 
try 
{ 
    bild = (Bitmap)tc.ConvertFrom(ar); 
} 
catch (Exception ddd) 
{ 
    Console.WriteLine(ddd.ToString()); 
} 

ар содержит растровые данные, то есть сине-зеленый-красный-альфа-синий ....

Я пытаюсь преобразовать это в битмап bild. Это то, что показывает консоль:

A first chance exception of type 'System.ArgumentException' occurred in System.Drawing.dll 
System.ArgumentException: Invalid Parameter. 
    at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) 
    at System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) 
    at System.ComponentModel.TypeConverter.ConvertFrom(Object value) 
    at SK.MainWindow.thread() in MainWindow.xaml.cs:Zeile 523. 

Как решить эту проблему?

ответ

0

Попробуйте это:

public static Bitmap BytesToBitmap(byte[] byteArray) 
{ 
    using (MemoryStream ms = new MemoryStream(byteArray)) 
    { 
     Bitmap img = (Bitmap)Image.FromStream(ms); 
     return img; 
    } 
} 
+0

System.ArgumentException: Invalid Parameter. в System.Drawing.Image.FromStream (поток Stream, Boolean, Boolean useEmbeddedColorManagement validateImageData) в System.Drawing.Image.FromStream (поток) Поток в SK.MainWindow.BytesToBitmap (байт [] ByteArray) в MainWindow.xaml. cs: Zeile 571. – Zurechtweiser

+0

То же исключение, верно?! –

+0

yes ................ – Zurechtweiser

0

Я не знаю, почему TypeConverter не работает, но вы можете добиться этого так же, как легко с помощью потока конструктору Bitmap класса:

var memoryStream = new MemoryStream(ar) 
var bild = new Bitmap(memoryStream); 

Примечание что согласно MSDN, memoryStream должен оставаться в живых на всю жизнь объекта.

+0

System.ArgumentException: Неверный параметр. в System.Drawing.Bitmap..ctor (поток потока) у SK.MainWindow.thread() ...... – Zurechtweiser

+0

Я предполагаю, что ваш байт [] не является допустимым растровым изображением. –

+0

Хорошо, что массив байтов Bgr32 и Bild нужны Format24bppRgb. Как преобразовать массив байтов Bgr32 в массив байтов Format24bppRgb? – Zurechtweiser

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