2015-04-17 50 views
0

我試圖將base64字符串轉換爲圖像並綁定結果。Windows Phone 8 C#將base64轉換爲圖像綁定此resul

這是我的XAML:

<Image Source="{Binding image64}"> 

要確保我的base64字符串是正確的我這樣做:

public BitmapImage image64 
    { 
     get 
     { 
      **//Convert my path img to Base64.** 
      byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(image); 
      string base64String = System.Convert.ToBase64String(bytes); 
      MessageBox.Show("Base 64 String :[" + base64String + "]"); 



      //Convert my img base64 to img. 
      byte[] fileBytes = Convert.FromBase64String(base64String); 

      using (MemoryStream ms = new MemoryStream(fileBytes, 0, fileBytes.Length)) 
      { 
       ms.Write(fileBytes, 0, fileBytes.Length); 
       BitmapImage bitmapImage = new BitmapImage(); 
       **bitmapImage.SetSource(ms);** 
       return bitmapImage; 
      } 
     } 
    } 

此代碼不能在我,因爲的SetSource的情況下工作。我發現這個「解決方案」在這裏: similar question 1 similar question 2

但他們並不在我的情況下工作,我認爲這是因爲他們沒有使用綁定。和我沒有任何想法解決它......

對不起,我的英語,我希望有人能幫助我:)

+0

是不是你的base64 sring在'image'變量?在這種情況下,您需要直接調用'byte [] fileBytes = Convert.FromBase64String(image);'另外,不要忘記在讀取之前重置流的位置:'ms.Position = 0'(右在'bitmapImage.SetSource'之前) –

+0

@KooKiz,我添加了ms.position = 0,並且我有一個新的錯誤。**找不到組件。 (來自HRESULT的異常:0x88982F50)** 你有什麼想法嗎?感謝您的回答 :) –

回答

0

我發現這個解決方案,它完美的作品。

byte[] filebytes = Convert.FromBase64String(image); 
       MemoryStream ms = new MemoryStream(filebytes, 0, filebytes.Length); 
       BitmapImage mimage = new BitmapImage(); 
       mimage.SetSource(ms); 
       return mimage;