我在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
我错过了一些简单的东西,还是我需要找到一种不同的方式来处理单声道的图像处理?
答案 0 :(得分:3)
经过相当多的测试后,我能够确定错误的根源。我试图使用 Bitmap.Resolution 的 Image.HorizontalResolution 和 Image.VerticalResolution 属性。虽然这些属性是在初始上传时设置的(文件从tmp目录读入流中),但当我使用图像本身的base64编码字符串回发时,看起来这些值以某种方式丢失了。因此,SetResolution方法失败了。
无论出于何种原因我在IIS / Windows上没有此问题,这两种情况下都存在这些属性。
答案 1 :(得分:0)
我遇到了类似的问题。从磁盘加载的位图,当它们都是== 300时报告bmp.HorizontalResolution == 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。