web-dev-qa-db-fra.com

Convertir un PNG transparent en JPG avec une couleur d'arrière-plan non noire

J'utilise System.Drawing.Image dans .Net pour effectuer une simple conversion de png en jpeg. J'utilise simplement ces deux lignes de code:

Image img = Image.FromFile(filename);
img.Save(newFilename, System.Drawing.Imaging.ImageFormat.Jpeg);

cela fonctionne bien, sauf lorsque les fichiers png contiennent de la transparence en raison du canal alpha. Dans ce cas, le jpeg converti a un fond noir. Existe-t-il un moyen de rendre le fond blanc à la place?

43
DaveS
// Assumes myImage is the PNG you are converting
using (var b = new Bitmap(myImage.Width, myImage.Height)) {
    b.SetResolution(myImage.HorizontalResolution, myImage.VerticalResolution);

    using (var g = Graphics.FromImage(b)) {
        g.Clear(Color.White);
        g.DrawImageUnscaled(myImage, 0, 0);
    }

    // Now save b as a JPEG like you normally would
}
77
Ry-