Estoy copiando una imagen. (Mi código real está cambiando el tamaño de la imagen, pero eso no es relevante para mi pregunta.) Mi código se ve más o menos así.Usando Graphics.DrawImage() para dibujar una imagen con transparencia/Alpha Channel
Image src = ...
using (Image dest = new Bitmap(width, height))
{
Graphics graph = Graphics.FromImage(dest);
graph.InterpolationMode = InterpolationMode.HighQualityBicubic;
graph.DrawImage(src, 0, 0, width, height);
dest.Save(filename, saveFormat);
}
Esto parece funcionar gran a menos src
se carga desde una imagen con transparencias (como GIF) o un canal alfa (como PNG).
¿Cómo puedo obtener DrawImage()
para transferir las transparencias/canal alfa a la nueva imagen, y luego guardarlas cuando guardo el archivo?
La pregunta es ¿cuál es el valor de la variable 'saveFormat'? Debería ser 'PixelFormat.Format32bppArgb' (u otro formato con canal alfa manejado). Pruebe también: 'using (Image dest = new Bitmap (width, height, PixelFormat.Format32bppArgb))'. –
Esto parece funcionar para canales alfa, pero no para transparencias GIF. 'saveFormat' variará según el formato del archivo de entrada. Si el archivo de entrada no admite el canal alfa, entonces es seguro asumir que la imagen no contendrá píxeles del canal alfa. –
Entonces, ¿cuál es el valor de 'saveFormat' para archivos GIF, entonces :)? –