2013-02-13 67 views
1

我試圖在Windows 8應用程序上顯示圖像。圖像數據是從Web服務收集的,並以Base64編碼的字符串形式提供。在Windows 8應用程序中使用C#讀取Base64圖像

我發現對堆棧溢出如下:

How do i read a base64 image in WPF?

然而,當我來到使用的BitmapImage類,我似乎無法訪問System.Windows.Media.Imaging,即使下面的Microsoft文檔使我們相信,這是可用於.NET 4.5的使用,並與Windows 8應用:

http://msdn.microsoft.com/en-us/library/ms619218.aspx

非常感謝您的幫助。

+0

到目前爲止你有什麼代碼?什麼是嘗試,不工作或在API中可用? – 2013-02-13 14:34:55

+0

我遇到的問題是訪問BitmapImage類,因爲在我的應用程序中,我無法添加'using System.Windows.Media.Imaging;',因爲「類型或名稱空間'Media'不存在於命名空間System .Windows「,即使Microsoft文檔說明它。 – Cheese1223 2013-02-13 14:46:11

+1

'System.Windows.Media.Imaging'是WPF和Silverlight的完整.NET命名空間。 Windows Store應用程序使用框架的一個不同的有限作物,UI堆棧實際上完全不在其中。它在Windows運行時名稱空間中:'Windows.UI.Xaml.Media.Imaging'。它在API方面也略有不同。 – 2013-02-13 17:45:20

回答

3

所需的類位於Windows.UI.Xaml.Media.Imaging命名空間中。下面是一個採取Base64圖像並從中創建圖像的示例...

var img = @"/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQ ... "; // Full Base64 image as string here 
var imgBytes = Convert.FromBase64String(img); 
var ms = new InMemoryRandomAccessStream(); 
var dw = new Windows.Storage.Streams.DataWriter(ms); 
dw.WriteBytes(imgBytes); 
await dw.StoreAsync(); 
ms.Seek(0); 

var bm = new BitmapImage(); 
bm.SetSource(ms); 

// img1 is an Image Control in XAML 
bm.ImageOpened += (s, e) => { this.img1.Source = bm; }; 
bm.ImageFailed += (s, e) => { Debug.WriteLine(e.ErrorMessage); }; 

我無法將完整的Base64圖像複製到答案中。

+0

非常感謝你,像魅力一樣工作! :) – Cheese1223 2013-02-13 18:44:12

相關問題