O System.Drawing.Graphics deixa a imagem com preto ao converter um PNG com transparência para Jpeg. Isso acontece porque o Jpeg não tem transparência e o System.Drawing.Graphics preenche a imagem com preto. Então a alternativa é escolher a cor de preenchimento do JPG, já que ele não tem transparência.
Abaixo um exemplo de preenchimento da imagem com branco.
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class image : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//carregando a imagem PNG de exemplo
using (Bitmap img = new Bitmap(MapPath("~/imagem.png")))
{
//utilizar o System.Drawing.Graphics para desenhar a imagem
using (Graphics g = Graphics.FromImage(new Bitmap(img.Width, img.Height)))
{
//Preencher com branco
g.Clear(Color.White);
//Desenhar imagem
g.DrawImage(img, new Point(0, 0));
}
//Salvar a imagem no formato JPG
img.Save(MapPath("~/imagem.jpg"), ImageFormat.Jpeg);
}
}
}
Caso você não precise utilizar o System.Drawing.Graphics utilize o exemplo abaixo.
Converter imagem PNG para JPG sem System.Drawing.Graphics
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class image : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//carregando a imagem PNG de exemplo
using (Bitmap img = new Bitmap(MapPath("~/imagem.png")))
{
//Salvar a imagem no formato JPG
img.Save(MapPath("~/imagem.jpg"), ImageFormat.Jpeg);
}
}
}
Resumo:
Neste artigo vimos um exemplo que mostra como escolher a cor de preenchimento do JPG ao converter um PNG com transparência utilizando o System.Drawing.Graphics e um exemplo sem ele.