3

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

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

我已经广泛地搜索了这个错误,并发现 Invalid parameter 错误通常会产生误导,并且如果上传本身有错误,或者图像未完全读取,则可能会触发。这在 IIS/Windows 上运行良好,但我无法让它在 Mono 中工作。

Apache2 单声道 2.10.8.1

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

4

2 回答 2

4

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

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

于 2012-07-09T17:24:30.903 回答
0

我遇到了类似的问题。从磁盘加载的位图,报告 bmp.Horizo​​ntalResolution==0 和 bmp.VerticalResolution==0 当它们都是==300 时。在 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。

于 2014-10-30T20:53:04.260 回答