C# 参数在图像读写XML文件时无效
我有一个XML文件,其中包含一个字节数组作为字符串。(Microsoft徽标Gif图像) i、 e 然后我使用以下函数将其读回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)注释中收到一个错误“参数无效”
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);