0

jpeg ファイルを圧縮する必要があり、圧縮率は動的で、トラック バーで設定する必要があります。C#、Windows フォームを使用しています。変数 jpgcompression は「エンコーダー」などのタイプである必要があると思いますが、これを行う方法がわかりません。取得し続ける: タイプ文字列または整数を使用すると、「パラメータが無効です」というエラー メッセージが表示されます。私のコードは以下の通りです:

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;
    }

ここに画像の説明を入力

4

1 に答える 1