2013-09-21 108 views
0

我需要壓縮jpeg文件,並且壓縮率必須是動態的,由軌跡欄設置。我正在使用C#,Windows窗體。我認爲變量jpgcompression只需要是類型「編碼器」或類似的東西,但我不確定如何做到這一點。繼續使用類型字符串或整數時出現「參數無效」錯誤消息。我的代碼如下:c#jpeg壓縮與軌跡條

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(最高品質,無壓縮)之間的值。

如果是,請檢查異常以確保它是編碼器參數有問題。