2013-09-21 2 views
0

Мне нужно сжать файл jpeg, а скорость сжатия должна быть динамической, заданной дорожкой. Я использую C#, Windows Forms. Я думаю, что переменная jpgcompression просто должна быть типа «Encoder» или что-то в этом роде, но я не уверен, как это сделать. Продолжайте получать сообщение об ошибке «Para meter is not valid» при использовании строки типа или целого числа. Мой код ниже:C# jpeg compression with trackbar

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

+0

C# - чувствительный к регистру язык, 'jpgcompression' не использует аргумент метода jpgCompression'. –

ответ

1

Передайте значение, как долго и проверьте, чтобы убедиться, что вы передаете значение в диапазоне от 0 (максимум сжатия) и 100 (максимальное качество, без сжатия).

Если вы хотите, проверьте исключение, чтобы убедиться, что это проблема с encoderparam.