2010-11-05 21 views
1

我試圖爲ASCII字符串轉換爲ImageSource的,像這樣在WP7:WP7轉換的ASCII字符串到圖像

 
      string imageString = "%PNG image data here in ASCII"; 

      byte[] imageBytes = new byte[sizeOfImage]; 
      System.Text.Encoding.UTF8.GetBytes(imageString.ToCharArray(), 0, imageString.ToCharArray().Length - 1, 
       imageBytes, 0); 

      MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); 

      // Convert byte[] to Image 
      ms.Write(imageBytes, 0, imageBytes.Length); 

      BitmapImage bitmapImage = new BitmapImage(); 
      bitmapImage.SetSource(ms); 

但在WP7沒有Encoding.ASCII如此明顯的「編碼。 UTF「行失敗,因爲WP7只有該編碼。有沒有解決方法?

注意:ASCII字符串表示一個PNG文件。

+1

除了「ASCII」之外,您還使用什麼樣的編碼?你知道ASCII只有7位,對吧?爲什麼你首先將圖像編碼爲文本? – 2010-11-05 19:32:33

+0

「這是Unicode」;我很困惑。 – 2010-11-05 19:33:50

+0

不是WP7項目允許資源文件或類似的地方,你可以把一個PNG文件的實際二進制副本,而不是像這樣做?我很確定你的ASCII「表示」實際上並不代表真正的PNG文件。它可能看起來像你,但它不會是一個有效的PNG文件,因爲ASCII只有7位,所以你在這個過程中失去了很多信息。 – 2010-11-05 19:42:01

回答

3

我懷疑你真正想要做的是這樣的: -

byte[] imageBytes = Convert.FromBase64String(imageString); 

然而拉塞是正確的。你爲什麼要這樣做?只需將png添加到Xap即可。整個變成這樣的: -

BitmapImage bitmapImage = new BitmapImage(new Uri("/Assets/yourfile.png", UriKind.Relative)); 

資產如果是你在你的項目來存儲這樣的事情創建一個文件夾。

+0

是的,除非您的圖像信息存儲在ASCII數據的某處,否則只需使用二進制文件(png,jpg,wav)作爲內容即可。 – 2010-11-06 17:59:23

+0

我從Web服務器獲取一個png文件作爲ASCII字符串。所以Base64確實有效。 – Exegesis 2010-11-07 14:18:09