如何将PNG转换为GIF以保持透明度?

时间:2015-06-10 16:32:15

标签: delphi graphics png gif

如何将PNG转换为GIF以保持透明度?

我希望使用Assign()方法可以工作但似乎没有迁移透明度。在GIF中,它表示为黑色。

    png:=TPngImage.Create;
    try
      png.LoadFromFile(sFile);
      // comes from file:  png.TransparencyMode;
      // comes from file:  png.Transparent

      // didn't help:  gif.Transparent:=true;

      gif.Assign(png);

      // didn't help:  gif.Transparent:=true;

      gif.SaveToFile('e:\tmp\out.gif');
    finally
      png.Free;
    end;

我还没有找到在德尔福处理这个问题的方法...

谢谢!

1 个答案:

答案 0 :(得分:2)

可以将图像从PNG传输到GIF。但是,我不建议您这样做。 GIF格式的能力远低于PNG。 PNG支持RGBA颜色通道和部分透明度。 GIF使用256色调色板,不支持部分透明度。

有许多库可以充分利用糟糕的工作并尝试生成接近PNG图像的GIF图像,但信息将会丢失。

GIF格式可以追溯到20世纪80年代后期,时间已经过去了。它早已达到其目的。 PNG现代,有能力并得到很好的支持。如果可以这样做,您应该从GIF切换到使用PNG。