3

指定されたエンコード品質でビットマップjpg形式を保存しようとしています。ただし、saveメソッドを呼び出すときに例外(「パラメーターが無効です。」)が発生します。

bmp.saveの最後の2つのパラメーターを省略した場合、正常に機能します。

        EncoderParameters eps = new EncoderParameters(1);
        eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 16);
        ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
        string outfile = outputpath + "\\" + fileaddition + sourcefile.Name;
        bmp.Save(outfile,ici,eps );

        bmp.Dispose();
        image.Dispose();
        return true;
    }
    ImageCodecInfo GetEncoderInfo(string mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }
}

ありがとうございました

4

2 に答える 2

26

GDI+ はかなり不安定です。値に 16L を使用するか、(long) にキャストする必要があります。

于 2008-12-21T16:10:53.230 に答える
4

次のように、品質値をlongにキャストする必要があります。

eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)16);
于 2009-08-23T08:29:43.463 に答える