GDI + Conversión de imágenes JPEG a partir de metarchivo / GIF Resultados en Fondo Negro
-
11-09-2019 - |
Pregunta
Así que me estoy convirtiendo un metarchivo (EMF para ser exactos) a un JPEG o GIF (no importa, siempre y cuando sea compatible con los navegadores) y cuando lo haga la conversión, todos los píxeles transparentes vuelve negro. No tengo ni idea de cómo hacer esto en GDI +, pero aquí está el método que uso para guardar el archivo:
Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)
Solución
echa un vistazo a la página web de Bob Powel. que tiene una métrica-basura-tonelada de GDI + cosas. éste es específicamente para trans del GIF
Otros consejos
A mi entender el metarchivo no contiene información para el fondo - es simplemente transparente.
Una obra sencilla en torno a color es simplemente el fondo el color que desee.
por ejemplo. El código siguiente crea un mapa de bits del mismo tamaño que la imagen original, dibuja el fondo blanco y luego dibuja la imagen de metarchivo en la parte superior del fondo.
Rectangle imageRect = new Rectangle(0, 0, originalImage.Width, originalImage.Height);
Bitmap newImage = new Bitmap(originalImage.Width, originalImage.Height);
Graphics g = Graphics.FromImage(newImage );
g.FillRectangle(new SolidBrush(Color.White), imageRect);
g.DrawImage(originalImage, new Point(0, 0));
Mi opinión es que es necesario proporcionar información para el marco, en relación con el formato de imagen de las imágenes de destino y de origen a fin de que los canales alfa a ser traducidos correctamente.
información Específicamente Color: bits por píxel y si hay o no es alfa por píxel o de un color transparente o un único valor alfa para toda la imagen - cosas por el estilo.
Sin embargo, no estoy seguro de cómo se hace esto en VB (o en .NET en absoluto para esa materia) - Yo uso nativo de C ++ para este tipo de operaciones ...