2010-03-03 43 views
0

正如所提到的標題,我想要將Image Obj編碼成某種文本數據(緊湊框架不支持binaryformatter,如果我錯了,請糾正我)。那麼是否有任何方法可以將Image Obj編碼爲文本數據,並將其保存在XML文件中以便稍後能夠將XML文件解碼爲Image obj?可以使用Compact Framework對圖像對象進行編碼/解碼以將其保存在XML文件中?

更新:這是我遵循山姆的決定。感謝Sam!

//Write to XML 
byte[] Ret; 
using (MemoryStream ms = new MemoryStream()) 
{ 
    myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
    Ret = ms.ToArray(); 
} 
StreamWriter myWrite = new StreamWriter(myPathFile); 
myWrite.Write(Convert.ToBase64String(Ret)); 
myWrite.Flush(); 
myWrite.Close(); 

然後,當欲從圖像解碼Base64String到圖像:包含在XML時

StreamReader StrR = new StreamReader(myPathFile); 
BArr = Convert.FromBase64String(StrR.ReadToEnd()); 
using (MemoryStream ms = new MemoryStream(BArr,0,BArr.Length)) 
{ 
    ms.Write(BArr, 0, BArr.Length); 
    listControl1.BGImage = new Bitmap(ms); 
} 
+1

順便說一下,你的'StreamReader'和'StreamWriter'需要在'using'塊中。 – 2010-03-04 02:24:22

+0

正在使用使用類似於創建對象的塊,然後object.Close()或object.Dispose()? – Thyphuong 2010-03-04 02:45:25

回答

1

通常的二進制數據被轉換爲Base64。看看Convert.ToBase64String

+0

但是在緊湊的框架中不支持二進制格式。你能說更多的細節嗎? – Thyphuong 2010-03-03 03:18:04

+0

您不需要二進制格式化程序。獲得圖像後,獲取字節,並將字節數組傳遞給'Convert.ToBase64String'。如果我有機會,我會稍後用樣本更新答案。 – 2010-03-03 15:43:19

相關問題