2009-12-07 55 views
1

我正在從iPhone客戶端代碼向Web服務發送圖像的字符串格式數據。我試圖用binary64編碼,然後將其轉換爲字節數組。我在代碼中的以下位置出現了Parameter not valid這個問題。ImageConverter:參數對字節數組無效

 byte[] ImgInput = System.Text.Encoding.UTF8.GetBytes(ImgInputString); 

     string imgString = Convert.ToBase64String(ImgInput); 
     byte[] imgBYtes = Convert.FromBase64String(imgString); 

     System.IO.Stream ms =(Stream) 
     new System.IO.MemoryStream(ImgInput); 
     //ms.Write(ImgInput, 0, ImgInput.Length); 
     ImageConverter ic = new ImageConverter(); 

     Image image = (Image)ic.ConvertFrom(imgBYtes);---ERROR here 

回答

4

ImageConverter類不用於解壓縮圖像文件。使用Image.FromStream方法來解壓陣列中的數據:

Image image; 
using (MemoryStream m = new MemoryStream(imgBytes)) { 
    image = Image.FromStream(m); 
} 

編輯:
然而,你的第一個問題是你如何對數據進行編碼。您將得到一個字符串,您將其編碼爲UTF-8,然後編碼爲base-64,然後從base-64進行解碼。你在這一點上仍然是一個編碼爲UTF-8的字符串,這不是你可以加載爲圖像的東西。將數據轉換爲base-64並再次返回不會以任何方式更改數據。

如果它是一個base64編碼字符串,你輸入,你應該對其進行解碼:如果是其他格式

byte[] imgBytes = Convert.FromBase64String(ImgInputString); 

,你必須使用相反的過程,以獲得二進制解碼它在發送之前編碼的數據。

+0

我已經做了Guffaa ..但我得到同樣的錯誤,但在Memorystream對象這一次..... – jacob

+0

@jacob:看到我上面的編輯。 – Guffa