2011-08-06 126 views
2

將圖像(或bitmapImage或PhotoResult)保存到byte []然後將其轉換回圖像時出現問題。Bitmap to byte []

我在網上發現了很多關於它的帖子,但他們不工作。在這段代碼中,當我這樣做時,我得到了一個Unspecifed errorSetSource (bitmapImage.SetSource(ms);)並且不知道該怎麼做。

我還想製作一個設備列表(每個設備都有一個名稱,編號,狀態和圖像,我將以byte[]表示)並將其保存到IsolatedStorage,然後讀取並列出它們(使用圖像當然)

下面是一些代碼我迄今:

public void photoChooserTask_Completed(object sender, PhotoResult e) 
{ 
    if (e.TaskResult == TaskResult.OK) 
    { 


     imageBytes = new byte[e.ChosenPhoto.Length]; 
     e.ChosenPhoto.Read(imageBytes, 0, imageBytes.Length); 

     BitmapImage bitmapImage = new BitmapImage(); 

     MemoryStream ms = new MemoryStream(imageBytes); 
     try 
     { 
      bitmapImage.SetSource(ms); 
     } 
     catch (Exception ea) 
     { 
      // 
     } 
      image1.Source = bitmapImage; 

    } 
+1

這實際上是兩個單獨的問題,應該如此分開。 – ctacke

+0

現在的問題是:熱將圖像或位圖轉換爲字節[] – przemyslaw

+0

然後刪除「我也想製作一個設備列表....」部分,因爲它與問題無關。 – ctacke

回答

1

您是否嘗試過的Microsoft.Phone.PictureDecoder類?它有一個返回WritableBitmap對象實例的DecodeJpeg函數。

另一種解決方案是使用WritableBitmapEx擴展庫,它使數字圖像處理變得更容易並且具有非常好的性能。你需要的函數叫做FromByteArray。

在這兩種情況下,您都必須使用WriteableBitmap,因爲BitmapImage不受修改。由於BitmapImage和WriteableBitmap都是BitmapSource的子類,因此您可以輕鬆地在圖像控件中顯示它們。

希望它有幫助!