ImageConverter:参数对字节数组无效

时间:2009-12-07 02:07:39

标签: c# web-services

我正在将图像的字符串格式化数据从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

1 个答案:

答案 0 :(得分: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);

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