Image.FromStream не работает так же, как на моей новой установке Windows - PullRequest
1 голос
/ 31 января 2011

У меня есть этот тест, который работал на моей старой машине.(32-разрядная версия Windows Vista Ultimate)

private static readonly byte[] TEST_BMP = new byte[]
    {
        0x42, 0x4D, 0x7E, 0, 0, 0, 0, 0, 0, 0, 0x76, 0, 0, 0, 0x28, 0, 0, 0, 0x2,
        0, 0, 0, 0x2, 0, 0, 0, 0x1, 0, 0x4, 0, 0, 0, 0, 0, 0x8, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0, 0, 0x80,
        0, 0, 0, 0x80, 0x80, 0, 0x80, 0, 0, 0, 0x80, 0, 0x80, 0, 0x80, 0x80, 0, 0,
        0x80, 0x80, 0x80, 0, 0xC0, 0xC0, 0xC0, 0, 0, 0, 0xFF, 0, 0, 0xFF, 0, 0, 0,
        0xFF, 0xFF, 0, 0xFF, 0, 0, 0, 0xFF, 0, 0xFF, 0, 0xFF, 0xFF, 0, 0, 0xFF,
        0xFF, 0xFF, 0, 0x40, 0, 0, 0, 0xF9, 0, 0
    };

[Test]
public void Can_get_Image_from_BMP_Stream()
{
    using (var memStream = new MemoryStream(TEST_BMP))
    {
        Image image = Image.FromStream(memStream);
        Assert.NotNull(image);
    }
}

На моей новой машине (64-разрядная версия Windows 7) она больше не работает.

Я получаю это исключение:

System.ArgumentException : Parameter is not valid.
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream)
at Litium.Framework.Image.Test.ImageManagerTests.Can_get_Image_from_BMP_Stream()

Если я вместо этого попробую с этим, это сработает ...

private static readonly byte[] TEST_GIF = new byte[]
    {
        0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x2, 0, 0x2, 0, 0x11, 0, 0, 0x2C, 0, 0
        , 0, 0, 0x2, 0, 0x2, 0, 0xA1, 0xFF, 0, 0, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0, 0,
        0x80, 0x2, 0x3, 0xC, 0x26, 0x5, 0, 0x3B
    };

Почему это не работает на моей новой машине?

1 Ответ

1 голос
/ 31 января 2011

Вы пытались добавить дополнительный 0 байт в конце?У меня хорошее предчувствие!

...