46

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

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

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

4

1 に答える 1

85
// 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
}
于 2011-06-28T22:06:31.713 に答える