.net GDI+;从图元文件到JPEG/GIF的图像转换结果为黑色背景
因此,我将一个图元文件(确切地说是EMF)转换为jpeg或gif(只要它与浏览器兼容就无所谓),当我进行转换时,所有透明像素都变为黑色。我不知道如何在GDI+中执行此操作,但以下是我用于保存文件的方法:.net GDI+;从图元文件到JPEG/GIF的图像转换结果为黑色背景,.net,vb.net,gdi+,metafile,image-conversion,.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.Im
Dim Img As System.Drawing.Imaging.Metafile = New System.Drawing.Imaging.Metafile(stream)
Img.Save(Server.MapPath("/FileName.gif"), System.Drawing.Imaging.ImageFormat.Gif)
我的理解是,您需要向框架提供有关目标和源图像的图像格式的信息,以便正确翻译alpha通道 特别是颜色信息:每像素位数,以及整个图像是否有每像素alpha或透明颜色或单个alpha值,诸如此类
<>但是,我不确定这是如何在VB中完成的(或者在.NET中,对于这一点)——我使用本机C++来进行这些类型的操作…< p>查看Bob Powell的网站。他有一公吨的GDI+东西。
据我所知,图元文件不包含背景信息-它只是透明的 一个简单的解决办法是简单地给背景涂上你想要的颜色 例如,下面的代码创建一个与原始图像大小相同的位图,绘制白色背景,然后在背景上绘制图元文件图像
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));