【问题标题】: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


    【解决方案1】:

    查看 Bob Powell 的网站。他有一大堆 GDI+ 的东西。 this one is specifically for trans GIF's

    【讨论】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-03
          • 2014-02-20
          • 2019-12-13
          • 2015-12-31
          相关资源
          最近更新 更多