[C#] Bild konvertieren PNG --> JGP

Drucken
( 1 Vote )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 19.07.2012 Zuletzt aktualisiert am 19.07.2012 Geschrieben von Jonny132
Will man Bilder mittels C# in ein anderes Format konvertieren, so kann man einfach mittels der Save - Methode der Image - Klasse das gewünschte Format übergeben.
Bei Transparenten PNG - Bilder führ dies jedoch zu einem unerwünschten Effekt. Und zwar wird bei dieser Methode der (Transparente) Hintergrund schwarz.

Convert PNG To JPG - Schwarzer Hintergrund:
Bitmap original = new Bitmap(@"logo.png");
original.Save("neu.jpg", ImageFormat.Jpeg);

JPG Bild mit schwarzem Hintergrund

Um diesen Konvertierungsfehler zu umgehen, muss man sich eines kleinen Workarounds bedienen.

Convert PNG To JPG - Weißer Hintergrund:
Bitmap original = new Bitmap(@"logo.png");
Bitmap result = new Bitmap(original.Width, original.Height);
Graphics g = Graphics.FromImage(result);
g.Clear(Color.White);
g.DrawImage(original, 0, 0,original.Width,original.Height);
result.Save(@"neu.jpg", ImageFormat.Jpeg);
Zuerst wird aus dem Originalbild eine Bitmap - Instanz erstellt.
Danach erstellen wir eine weitere Bitmap - Instanz mit den Dimensionen des Originalbildes.

Per Graphics.FromImage() erstellen wir ein Graphics Object mit dem wir per .Clear() den Hintergrund mit der angegebenen Farbe füllen (in diesem Fall Weiss).

Danach wird noch per DrawImage() das Originale Bild auf das neue gezeichnet und schlussendlich per Save() und dem neuen Format gespeichert.

Konvertierung von Transparenz zu einem weissen Hintergrund
   

    Veröffentlichen Sie ihre Kommentare ...