所以我将图元文件(确切地说是EMF)转换为jpeg或gif(只要它与浏览器兼容并不重要),当我进行转换时,所有透明像素都变黑。我不知道如何在GDI +中执行此操作,但这是我用来保存文件的方法:
Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)
答案 0 :(得分:6)
查看Bob Powel的网站。他有一些公制的GDI +东西。 this one is specifically for trans GIF's
答案 1 :(得分:1)
据我所知,图元文件不包含背景信息 - 它只是透明的。
一个简单的解决方法是简单地为背景着色你想要的颜色。
E.g。下面的代码创建一个与原始图像大小相同的位图,绘制背景白色,然后在背景上绘制图元文件图像。
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));
答案 2 :(得分:0)
我的理解是,您需要向框架提供有关目标和源图像的图像格式的信息,以便正确转换Alpha通道。
具体的颜色信息:每个像素的位数以及是否存在每个像素的alpha或透明颜色或整个图像的单个alpha值 - 这样的东西。
但是,我不确定如何在VB中完成此操作(或者在.NET中完全没有这样做) - 我使用本机C ++进行这些类型的操作...