从字节数组wpf创建一个WriteableBitmap

时间:2014-10-06 15:17:29

标签: c# wpf bitmapimage writeablebitmap

从示例中我已经能够创建BitmapImage字节数组

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未被用户代码处理   消息=缓冲区大小不足。

我希望有人可以指出我正确的方向 欢呼声

1 个答案:

答案 0 :(得分:2)

尝试增加缓冲区的大小...... 缓冲区大小应该像stride * height一样计算。