使用轨迹栏进行c#jpeg压缩

时间:2013-09-21 17:26:41

标签: c# compression jpeg

我需要压缩jpeg文件,压缩率必须是动态的,由轨迹栏设置。我正在使用C#,Windows Forms。我认为变量jpgcompression只需要是“Encoder”类型或类似的东西,但我不确定如何做到这一点。继续获取:使用类型字符串或整数时“Para meter无效”错误消息。我的代码如下:

public void resizeImage(Image newImg, int width, int height, string filePath, int jpgCompression)
    {
        Image newImage = new Bitmap(newImg, width, height);
        ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
        var jpgcompression = jpgCompression.ToString() + "L";
        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;

        EncoderParameters myEncoderParameters = new EncoderParameters(1);

        EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, jpgcompression);
        myEncoderParameters.Param[0] = myEncoderParameter;
        newImage.Save(filePath, jgpEncoder, myEncoderParameters);
    }

    private ImageCodecInfo GetEncoder(ImageFormat format)
    {

        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

        foreach (ImageCodecInfo codec in codecs)
        {
            if (codec.FormatID == format.Guid)
            {
                return codec;
            }
        }
        return null;
    }

enter image description here

1 个答案:

答案 0 :(得分:1)

将值作为long传递并检查以确保传递的值介于0(最大压缩)和100(最大质量,无压缩)之间。

如果是,请检查异常以确保它是带有问题的编码器参数。