web-dev-qa-db-ja.com

黒以外の背景色で透明PNGをJPGに変換

.NetのSystem.Drawing.Imageを使用して、pngからjpegへの簡単な変換を行っています。私は基本的に次の2行のコードを使用しています。

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

pNGファイルにアルファチャンネルによる透明度が含まれている場合を除いて、正常に機能します。その場合、変換されたjpegの背景は黒になります。代わりに背景を白にする方法はありますか?

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-