2014-10-06 4 views
0

из примеров, которые я смог создать BitmapImage массив байтовСоздать WriteableBitmap из массива байтов МОФ

public byte[] BufferFromImage(BitmapImage myImageFile) 
{ 
    WriteableBitmap btmMap = new WriteableBitmap(BitmapFactory.ConvertToPbgra32Format(myImageFile)); 
    return btmMap.ToByteArray(); 
} 

Сейчас я ищу в обратном, но до сих пор без успеха, я проверил https://writeablebitmapex.codeplex.com, в котором говорится, что он может создать WriteableBitmap из массива байтов, но я не нашел примеров.

public WriteableBitmap ByteArrayToImage(Byte[] BArray) 
{ 

    var width = 100; 
    var height = 100; 
    var dpiX = 96d; 
    var dpiY = 96d; 
    var pixelFormat = PixelFormats.Pbgra32; 
    var bytesPerPixel = (pixelFormat.BitsPerPixel + 7)/8; 
    var stride = bytesPerPixel * width; 

    var bitmap = BitmapImage.Create(width, height, dpiX, dpiY, pixelFormat, null, BArray, stride); 
    WriteableBitmap wbtmMap = new WriteableBitmap(BitmapFactory.ConvertToPbgra32Format(bitmap)); 
    return wbtmMap; 
} 

Это возвращает ошибку

System.ArgumentException был необработанным с помощью кода пользователя сообщения размера = Buffer не является достаточным.

Я надеюсь кто-то может мне точку в правильном направлении приветствий

+0

На какой строке возникает исключение? Я предполагаю, что это либо «BitmapImage.Create», либо «new WriteableBitmap», но это будет хорошей отправной точкой. –

ответ

2

Попробуйте увеличить размер этого буфера ... Размер буфера должен быть рассчитан как шага * высота.

+0

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