3

私は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 Mono 2.10.8.1

単純なものが欠けていますか、それともモノラルの画像操作を処理する別の方法を見つける必要がありますか?

4

2 に答える 2

4

かなりのテストを行った後、エラーの原因を特定することができました。Bitmap.ResolutionのImage.Horizo ​​ntalResolutionプロパティとImage.VerticalResolutionプロパティを使用しようとしました。これらのプロパティは最初のアップロード(ファイルがtmpディレクトリからストリームに読み込まれる)で設定されましたが、画像自体のbase64でエンコードされた文字列を使用して投稿すると、これらの値が何らかの理由で失われたようです。このため、SetResolutionメソッドは失敗しました。

何らかの理由でIIS/Windowsでこの問題が発生しない場合、プロパティは両方の状況で存在します。

于 2012-07-09T17:24:30.903 に答える
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のデフォルトの解像度は96dpiだと思います。

于 2014-10-30T20:53:04.260 に答える