2

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

3 回答 3

6

查看鲍勃鲍威尔的网站。他有一大堆 GDI+ 的东西。 这个是专门用于跨 GIF 的

于 2009-07-08T22:49:53.267 回答
1

据我了解,元文件不包含背景信息 - 它只是透明的。

一个简单的解决方法是简单地将背景着色为您想要的颜色。

例如,下面的代码创建一个与原始图像大小相同的位图,绘制白色背景,然后在背景顶部绘制图元文件图像。

        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));
于 2010-04-06T13:24:35.333 回答
0

我的理解是,您需要向框架提供有关目标和源图像的图像格式的信息,以便正确转换 Alpha 通道。

特别是颜色信息:每个像​​素的位数以及是否存在每个像素的 alpha 或透明颜色或整个图像的单个 alpha 值 - 类似的东西。

但是,我不确定这是如何在 VB 中完成的(或者在 .NET 中)——我使用本机 C++ 进行这些类型的操作......

于 2009-07-08T22:49:31.940 回答