2013-04-07 109 views
0

我有WriteableBitmap。我知道在變量wp1存在圖像,因爲我保存了這張圖片,而且都很好。我需要將圖像編碼爲byte[]陣列。空字節數組c#winrt

WriteableBitmap wp1 = new WriteableBitmap(1, 1); ; 
wp1.SetSourceAsync(memStream); 

using (Stream stream = wp1.PixelBuffer.AsStream()) 
{ 
    if (stream.CanWrite) 
    { 
     byte[] pixelArray = new byte[stream.Length]; 
     await stream.ReadAsync(pixelArray, 0, pixelArray.Length); 
    } 
} 

畢竟pixelArray爲空。數組pixelArray的長度等於stream的長度,但所有字節均爲零。我該怎麼辦?

+0

爲什麼你的能力,*寫*的檢查在*閱讀*之前從它流?目前還不清楚你在這裏做什麼。我強烈懷疑'SetSourceAsync'不是你想要的 - 我注意到你並沒有等待它。 – 2013-04-07 08:47:31

回答

2

我覺得你的問題是這行代碼:

wp1.SetSourceAsync(memStream); 

這是一個異步方法,所以你必須要等到它的繼續之前完成。嘗試將其更改爲:

await wp1.SetSourceAsync(memStream); 
+0

我認爲你的答案是可以接受的。 – 2013-04-07 09:01:34

0

如果您使用WriteableBitmap的擴展,有,做,對你,像一個更簡單的方法:var pixelDataArray = wp1.ToByteArray();