.Net - Throwing Arguments When Trying to Convert Bitmap to JPEG

So, I was trying to convert a Bitmap image to JPEG to code and I keep getting this error:

An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll

Additional information: The parameter is not valid.

Here is the related code. All paths are correct and the EncoderParameter is not null, what else could be causing this?

ImageCodecInfo codecInfo = null;

foreach( ImageCodecInfo codec in  ImageCodecInfo.GetImageEncoders())
{
    if (codec.MimeType != "image/jpeg") { continue; }

    codecInfo = codec;
    break;
}

EncoderParameters encoderParameters = new EncoderParameters();
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85);
using (Bitmap bitmapToConvert = new Bitmap(filePathIn))
{
    bitmapToConvert.Save(filePathOut, codecInfo, encoderParameters);
}

      

+2


source to share


1 answer


Doh!

encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85);

      

Should be:



encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85L);
//OR
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, (long)85);

      

In IL 85 stays as int, and GDI backend doesn't like it, it wants long. I hate non-descriptive exceptions.

Ok, thanks for all the time.

+4


source







All Articles