我正在将图像的字符串格式化数据从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
答案 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);
如果是其他格式,则必须使用反向过程对其进行解码,以获取在发送之前编码的二进制数据。