2012-07-09 449 views
2

我正在Mono/linux上运行MVC3应用程序,并且除图像上传实用程序外,一切正常。每当图片上传尝试,我得到无效参数错误从以下方法中:找到空引用或无效值[GDI + status:InvalidParameter]

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

我已经广泛地用Google搜索这个错误,并已发现无效的参数错误往往是误导性的,并可能触发如果例如,上传本身出现错误,或者图像未完全读取。这在IIS/Windows上运行良好,但我一直无法在Mono中运行。

的Apache2 单2.10.8.1

我失去了一些东西简单或者我需要找到一个不同的方式来处理图像处理的单?

回答

2

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

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

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。

相关问题