从图元文件到JPEG / GIF结果的GDI +图像转换在黑色背景中

时间:2009-07-08 22:43:17

标签: .net vb.net gdi+ metafile image-conversion

所以我将图元文件(确切地说是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)

3 个答案:

答案 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 ++进行这些类型的操作...