我需要將圖片(即存儲在Image類型的對象中)轉換爲字符串以存儲(以及稍後用於轉換回Image對象用於顯示)在一個地鐵應用程序在metro/windows 8中將圖像轉換爲字符串(base64).NET 4.5
我已經找到了很多的答案在.NET 4.0等轉換圖像爲base64字符串,但在4.5 System.Windows.Bitmap命名空間不存在(圖像類是在Windows.UI.Xaml.Media.Imaging)以及在4.0中的「Save()」中可能的命名空間中的方法似乎不在4.5中......除非我無法找到它。
即使世界這樣here的一個例子,但就像我說的它不會在metro應用/工作.NET 4.5
什麼想法?
更多詳細信息: 將執行此操作的方法將轉換包含圖像對象(ive使用其源屬性,是否正確?)的實例字段,並需要將轉換結果字符串存儲在實例字符串中領域。然後可以對整個對象進行序列化,忽略Image字段,希望稍後反序列化並將字符串恢復到Image字段以供顯示。到目前爲止,我試圖使用DataContractSerializer來從圖像序列化字符串,但它似乎並不喜歡它。一旦我從圖像中得到一個字符串,我就可以序列化它,但它不是我以前做過的。
而且,似乎只有.NET 4.5的文檔是絕對正確的是這裏的網頁:http://msdn.microsoft.com/library/windows/apps/
頁的「正常看」 MSDN網站.NET 4.5似乎並不總是工作在地鐵應用程序? (只是一個理論?)
[解決]
我終於得到它!對於其他任何人曾經有做這個答案就在這裏:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/38c6cb85-7454-424f-ae94-32782c036567/
我這個序列之後,這樣做
var reader = new DataReader(myMemoryStream.GetInputStreamAt(0));
var bytes = new byte[myMemoryStream.Size];
await reader.LoadAsync((uint)myMemoryStream.Size);
reader.ReadBytes(bytes);
,字節數組bytes
將數據從它的流,從那裏我設置字符串的值爲
Convert.ToBase64String(bytes);
值你也許可以使用WriteableBitmapExtensions將圖像轉換爲字節數組,然後可以轉換爲base64編碼字符串:http://writeablebitmapex.codeplex.com/他們有Windows 8的地鐵支持,但我沒有與它合作ñ地鐵,所以我不會張貼這個答案。 – 2012-07-24 18:51:20
就是這樣。這是個詭計,我會將這個問題標記爲最低限度,因爲我將來肯定會需要這個問題。 – devundef 2012-07-28 19:13:40