代码如下:
Image img = Image.FromFile("E:\\aa.jpg");
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Jpeg);
img.Dispose();
byte[] a = ms.ToArray();string data = Encoding.Unicode.GetString(ms.ToArray());
byte[] b = Encoding.Unicode.GetBytes(data); //测试MemoryStream stream = new MemoryStream(Encoding.Unicode.GetBytes(data));Image i = Image.FromStream(stream);// "参数无效"异常跟踪发现b[]的维输小于a[] 的维数
经过这两句转换
string data = Encoding.Unicode.GetString(ms.ToArray());
byte[] b = Encoding.Unicode.GetBytes(data); //测试
丢了一些字节,导致了Image i = Image.FromStream(stream);// "参数无效"异常这是什么原因啊?

解决方案 »

  1.   

    错了,是Unicode改为Default试试
      

  2.   

    又见如此转换……没有任何人保证任何字节数组都能转换成字符串!!对于任何编码而言!
    只有字符串->字节数组->字符串这样的转换是安全的,只要两次转换的编码一致。而字节数组--编码->字符串 并不总是成功的!
    如果你真的要把字节数组转换成字符串保存,用Base64编码,参阅Converter.ToBase64方法。