Ich versuche eine Bildkomprimierungsfunktion zu implementieren, die auf Bildern verwendet wird, die auf meine Website hochgeladen werden. Ich möchte das Originalbild aufnehmen und 3 verschiedene Größen/Qualitätsstufen speichern. Dazu benutze ich ImageProcessor.ImageFactory
. Die drei Ebenen:ImageProcessor.ImageFactory Komprimierung reduziert die Bilddateigröße nicht
Was passiert ist, dass die mittleren und kleinen Bilder nicht die erwartete kleinere Dateigröße haben.
Ein Beispiel: Originalbild ist ein .jpg 3000x3000, das 3,7 MB groß ist.
Die große Bildgrße 2.96MB Das Medium wird die Bildgröße 2.63MB Die kleine Bildgröße ist 2.62MB
ich folgendes auf das kleine Bild versucht, es Qualität zu 10% weiter zu komprimieren:
// Encoder parameter for image quality
EncoderParameter qualityParam = new EncoderParameter(Encoder.Quality, 10);
// JPEG image codec
ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
img.Save(path, jpegCodec, encoderParams);
das Endergebnis ist deutlich geringer Qualität, aber die Größe der Bilddatei ist noch
2.62MBEdit: hochgeladen Originalbilder geteilt auf postimg
Das Medium Bild:
Das kleine Bild:
Das kleine Bild komprimiert:
Das Originalbild:
sicher das Ausgabeformat ist 'jpeg'? '.BackgroundColor (Color.Transparent)' deutet auf ein Transparenz unterstützendes Format hin, welches 'jpeg' nicht ist. Wenn ich die "Medium" -Datei (77,8 kB) nehme, sie in Paint.NET einspeise und sie als JPEG mit 10% Encoder-Qualität speichere, bekomme ich ein 3,58 kB Bild, das funktioniert wie erwartet. Können Sie die originale 3000x3000px Datei hochladen? –
aber große angehängte Bilddateigröße ist '78KB' und kleinste ist' 21KB' – esiprogrammer
@MaximilianGerhardt - SO erlaubt mir nicht, das ursprüngliche Bild (oder die md- oder SM-Bilder) hochzuladen, da sie über 2mb sind. Ich werde versuchen, die Bilder zu hosten und sie zu teilen. – Carel