我正在将图像的字符串格式数据从iPhone客户端代码发送到Web服务。我试图将其编码为binary64,然后将其转换为字节数组。在下面的代码中,我遇到了Parameter not valid的问题。

        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

最佳答案

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);


如果是其他格式,则必须使用相反的过程对其进行解码,以获取在发送之前已编码的二进制数据。

10-07 16:17
查看更多