2014-10-06 161 views
0

從例子WriteableBitmap的我已經能夠創建BitmapImage的字節數組創建從一個字節數組WPF

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了未處理由用戶代碼 消息=緩衝區大小是不夠的。

我希望有人能指出我朝着正確的方向 歡呼

+0

異常來自哪一行?我認爲它是「BitmapImage.Create」或「new WriteableBitmap」,但這是一個很好的起點。 – 2014-10-06 15:21:07

回答

2

嘗試增加緩衝區的大小... 緩衝區大小應計算如下步幅*高度。

+0

幾乎正確的答案,我有圖像的高度錯誤,你提到的緩衝區大小,並導致我正確的解決方案 – mgphall 2014-10-06 20:51:15