3

我试图用这段代码来做,但我ArgumentException在函数中得到了一个“ms” byteArrayToImage

byteArrayToImage正常工作,byte[]但当我得到节点值时我遇到了麻烦。

XML 节点包含一个二进制代码。

public Image byteArrayToImage(byte[] byteArrayIn)
{
    MemoryStream ms = new MemoryStream(byteArrayIn);
    Image returnImage = Image.FromStream(ms);
    return returnImage;
}

static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);

    return bytes;
}

foreach (var binary in xdoc.Root.Elements(ns + "binary"))
{

    if (item.Value == "cover.jpg") MessageBox.Show(item.Value.ToString());
    foreach (var binaryAttr in binary.Attributes())
    {
        if (binaryAttr.Value == "cover.jpg")
        {
            var s = GetBytes(binary.Value);

            byteArrayToImage(s);


        }
    }
}
4

1 回答 1

1

目前尚不清楚“包含二进制代码”是什么意思。通常,XML 中的二进制数据存储在 Base64 中......而您正在以一种几乎肯定不会在 XML 中工作的方式转换纯字符数据。

我怀疑你可以删除你的GetBytes方法并使用

var bytes = Convert.FromBase64String(binary.Value);
于 2012-11-26T12:37:39.287 回答