46 votes

Convertir un PNG transparent en JPG avec une couleur de fond non noire

J'utilise System.Drawing.Image dans .Net pour effectuer une simple conversion de png en jpeg. J'utilise essentiellement 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 l'arrière-plan blanc à la place ?

82voto

minitech Points 87225
// 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
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X