Bilder mit JPEG beliebig komprimieren in C#

Heute zeige ich euch, wie man Bilder mit Hilfe des JPEG-Codecs beliebig komprimieren kann. Beliebig heißt in unserem Fall, dass ihr die Qualitätsstufe festlegen könnt, die das Bild trotz des Komprimierens beibehalten soll. Da die Funktion, die ich euch dafür geschrieben habe relativ kurz ist, denke ich, dass die Kommentare im Quelltext ausreichen sollten. Und nun viel Spaß damit!

private void JpegBildKomprimieren(Image quellBild, int qualitaet, string speicherPfad)
{
    try
    {
        //Ein ImageCodecInfo-Objekt für den JPEG-Codec anlegen
        ImageCodecInfo jpegCodec = null;

        //Den Qualitätsarameter konfigurieren (Qualitätsfaktor in
        //Prozent angeben)
        EncoderParameter qualitaetsParameter = new EncoderParameter(
                    System.Drawing.Imaging.Encoder.Quality, qualitaet);

        //Alle im System verfügbaren Codecs auflisten
        ImageCodecInfo[] alleCodecs = ImageCodecInfo.GetImageEncoders();

        EncoderParameters codecParameter = new EncoderParameters(1);
        codecParameter.Param[0] = qualitaetsParameter;

        //Den JPEG-Codec unter allen Codecs finden und dem
        //Codec-Info-Objekt zuweisen
        for (int i = 0; i < alleCodecs.Length; i++)
        {
             if (alleCodecs[i].MimeType == "image/jpeg")
             {
                    jpegCodec = alleCodecs[i];
                    break;
             }
        }

        //Das Bild abspeichern
        quellBild.Save(speicherPfad, jpegCodec, codecParameter);
   }
   catch (Exception e)
   {
        throw e;
   }
}

//Snippet von www.code-bude.net

Aufgerufen werden kann die Funktion zum Beispiel wie folgt:

JpegBildKomprimieren(Image.FromFile(Application.StartupPath + "\\bild.jpg"),
                             30, Application.StartupPath + "\\klein.jpg");
//Snippet von www.code-bude.net

Solltet ihr noch Fragen oder Probleme haben, so schreibt mir einfach einen Kommentar.
Viele Grüße,
Raffi

2 Kommentare

  1. Christinesays:

    Deine Methode klappt wirklich super! Allerdings kann ich die quellbild.Save-Methode bei dem, was ich machen muss, nicht verwenden. Am liebsten hätte ich, dass aus der Komprimierungsmethode das komprimierte Bild zurückgegeben wird. Ist das irgendwie möglich?

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.