【问题标题】:GDI+ Image Conversion From Metafile to JPEG/GIF Results in Black Background从元文件到 JPEG/GIF 的 GDI+ 图像转换导致黑色背景
【发布时间】:2009-07-08 22:43:17
【问题描述】:
所以我将元文件(确切地说是 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)
【问题讨论】:
标签:
.net
vb.net
gdi+
metafile
image-conversion
【解决方案2】:
据我了解,元文件不包含背景信息 - 它只是透明的。
一个简单的解决方法是简单地将背景着色为您想要的颜色。
例如下面的代码创建一个与原始图像大小相同的位图,将背景绘制为白色,然后在背景之上绘制元文件图像。
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));
【解决方案3】:
我的理解是,您需要向框架提供有关目标和源图像的图像格式的信息,以便正确转换 Alpha 通道。
具体的颜色信息:每个像素的位数以及整个图像是否存在每个像素的 alpha 或透明颜色或单个 alpha 值 - 类似的东西。
但是,我不确定这是如何在 VB 中完成的(或者在 .NET 中)——我使用本机 C++ 进行这些类型的操作...