Daher habe ich versucht, ein Bitmap-Bild im Code in JPEG umzuwandeln, und es wird immer wieder der folgende Fehler angezeigt:
Eine nicht behandelte Ausnahme vom Typ "System.ArgumentException" ist in aufgetreten System.Drawing.dll
Zusätzliche Informationen: Parameter ist ungültig.
Hier ist der zugehörige Code. Alle Pfade sind korrekt und der EncoderParameter ist nicht null. Woran könnte das liegen?
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);
}
Antworten:
4 für die Antwort № 1Do!
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85);
Sollte sein:
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 85L);
//OR
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, (long)85);
In IL bleibt 85 als int, und das GDI - Backend mag das nicht, es will eine lange. Ich hasse nicht beschreibende Ausnahmen.
Na ja, danke für die Zeit aller.