【问题标题】:Create a WriteableBitmap from a byte array wpf从字节数组 wpf 创建 WriteableBitmap
【发布时间】:2014-10-06 15:17:28
【问题描述】:

从示例中我已经能够创建 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 未被用户代码处理 Message=缓冲区大小不足。

我希望有人能指出我正确的方向 干杯

【问题讨论】:

  • 异常起源于哪一行?我假设它是BitmapImage.Createnew WriteableBitmap,但这是一个很好的起点。

标签: c# wpf bitmapimage writeablebitmap


【解决方案1】:

尝试增加缓冲区的大小... 缓冲区大小应该像步幅 * 高度一样计算。

【讨论】:

  • 几乎正确的答案,我的图像高度错误,您提到缓冲区大小,这导致我找到正确的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 2015-11-19
  • 2013-09-23
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多