C# 参数在图像读写XML文件时无效

C# 参数在图像读写XML文件时无效,c#,xml,image,bitmap,bytearray,C#,Xml,Image,Bitmap,Bytearray,我有一个XML文件,其中包含一个字节数组作为字符串。(Microsoft徽标Gif图像) i、 e 然后我使用以下函数将其读回 public Bitmap byteArrayToImage(byte[] byteArrayIn) { MemoryStream mem = new MemoryStream(byteArrayIn); return new Bitmap(mem); } 但是,我在新位图(mem)注释中收到一个错误“参数无效”

我有一个XML文件,其中包含一个字节数组作为字符串。(Microsoft徽标Gif图像)

i、 e

然后我使用以下函数将其读回

    public Bitmap byteArrayToImage(byte[] byteArrayIn)
    {
        MemoryStream mem = new MemoryStream(byteArrayIn);
        return new Bitmap(mem);
    }
但是,我在新位图(mem)注释中收到一个错误“参数无效”

我不明白的是,这是读取它的问题,还是写入磁盘的问题。我正在使用以下函数编写字节数组,这是XML类上的一个参数

   public byte[] imageToByteArray(Bitmap bmp)
    {
        TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap));
        return (byte[])converter.ConvertTo(bmp, typeof(byte[]));
    }
为了保存XML,我使用

    public string SettingsToXMLString(Settings settings)
    {
        StringWriter Output = new StringWriter(new StringBuilder());
        XmlSerializer s = new XmlSerializer(settings.GetType());
        s.Serialize(Output, settings);
        return Output.ToString();
    }
非常感谢Andrew,您应该使用它从xml文档中检索二进制数据。因此,您的代码应该如下所示:

CustomerLogo1 = Convert.FromBase64String(xmlDoc.ChildNodes[1].ChildNodes[8].InnerText);

编辑:正如Jim所说,您应该更好地通过xml元素的名称而不是它们在文档中的当前位置来访问xml元素。

GetBytes
中,为什么不直接使用
str.tocharray()
而不是手动测量并复制它?另外,从哪里可以得到“参数无效”?哪种方法?哪个参数?另外,您确定
xmlDoc.ChildNodes[1].ChildNodes[8]
正是您想要的元素吗?我建议你直呼其名。
   public byte[] imageToByteArray(Bitmap bmp)
    {
        TypeConverter converter = TypeDescriptor.GetConverter(typeof(Bitmap));
        return (byte[])converter.ConvertTo(bmp, typeof(byte[]));
    }
    public string SettingsToXMLString(Settings settings)
    {
        StringWriter Output = new StringWriter(new StringBuilder());
        XmlSerializer s = new XmlSerializer(settings.GetType());
        s.Serialize(Output, settings);
        return Output.ToString();
    }
CustomerLogo1 = Convert.FromBase64String(xmlDoc.ChildNodes[1].ChildNodes[8].InnerText);