[将图像保存为jpeg时如何设置Encoder.LuminanceTable

问题描述 投票:1回答: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.

如何设置亮度表和色度表?

c# jpeg system.drawing
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.