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 に答える