找到空引用或无效值[GDI + status:InvalidParameter]

时间:2012-07-09 15:33:04

标签: asp.net-mvc-3 mono gdi+

我在Mono / linux上运行MVC3应用程序,除了图像上传实用程序外,一切正常。每当尝试上传图像时,我都会从以下方法中获得无效参数错误:

    System.Drawing.GDIPlus.CheckStatus(status As Status) (unknown file): N 00339
    System.Drawing.Bitmap.SetResolution(xDpi As Single, yDpi As Single)

我已广泛搜索此错误并发现无效参数错误通常会产生误导,如果上传本身出现错误,或者图片未完全读取,则可能会触发。这在IIS / Windows上运行良好,但我无法在Mono中使用它。

的Apache2 单声道2.10.8.1

我错过了一些简单的东西,还是我需要找到一种不同的方式来处理单声道的图像处理?

2 个答案:

答案 0 :(得分:3)

经过相当多的测试后,我能够确定错误的根源。我试图使用 Bitmap.Resolution Image.Horizo​​ntalResolution Image.VerticalResolution 属性。虽然这些属性是在初始上传时设置的(文件从tmp目录读入流中),但当我使用图像本身的base64编码字符串回发时,看起来这些值以某种方式丢失了。因此,SetResolution方法失败了。

无论出于何种原因我在IIS / Windows上没有此问题,这两种情况下都存在这些属性。

答案 1 :(得分:0)

我遇到了类似的问题。从磁盘加载的位图,当它们都是== 300时报告bmp.Horizo​​ntalResolution == 0和bmp.VerticalResolution == 0。 Windows上不会发生此问题。

进一步挖掘,我发现以下测试失败:

    [Test]
    public void GDI_SetResoltion()
    {
        var b1 = new Bitmap (100, 100);
        Assert.That (b1.HorizontalResolution, Is.Not.EqualTo (0));
        Assert.That (b1.VerticalResolution, Is.Not.EqualTo (0));
    }

我相信Windows的默认分辨率为96 dpi。