1

画像を jpeg に保存するときに、高度な画像パラメーターを操作しようとしています。

これが私がやっていることです:

    private static ImageCodecInfo GetEncoderInfo(String mimeType = "image/jpeg")
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }

...

        var img=Image.FromFile(
            @"myoriginal.jpg");
        ImageCodecInfo nfo = GetEncoderInfo();

        var eps = new EncoderParameters(2);
        eps.Param[0] = new EncoderParameter(Encoder.LuminanceTable, new byte[]
        {    2,   1,   1,   2,   2,   4,   5,   6, 
            1,   1,   1,   2,   3,   6,   6,   6, 
            1,   1,   2,   2,   4,   6,   7,   6, 
            1,   2,   2,   3,   5,   9,   8,   6, 
            2,   2,   4,   6,   7,  11,  10,   8, 
            2,   4,   6,   6,   8,  10,  11,   9, 
            5,   6,   8,   9,  10,  12,  12,  10, 
            7,   9,  10,  10,  11,  10,  10,  10  });
        eps.Param[1] = new EncoderParameter(Encoder.ChrominanceTable, new byte[]
        {    2,   2,   2,   5,  10,  10,  10,  10 ,
            2,   2,   3,   7,  10,  10,  10,  10, 
            2,   3,   6,  10,  10,  10,  10,  10, 
            5 ,  7,  10,  10,  10,  10,  10,  10, 
            10,  10,  10,  10,  10,  10,  10,  10, 
            10,  10,  10, 10,  10,  10,  10,  10, 
            10,  10,  10,  10,  10,  10,  10,  10, 
            10,  10,  10,  10,  10,  10 , 10,  10 });

        ImageCodecInfo ici = GetEncoderInfo();

        img.Save(@"changed.jpg",ici,eps);

これを実行すると、次のエラーが発生します。

System.ArgumentException: Parameter is not valid.

LuminanceTable と ChrominanceTable を設定するにはどうすればよいですか?

4

0 に答える 0