2009-12-07 32 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