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

How can I convert PNG to GIF keeping the transparency?

如何将 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;

我在Delphi中还没有找到处理这个问题的方法...

谢谢!

可以将图像从 PNG 格式转换为 GIF 格式。但是,我不建议您这样做。 GIF 格式的功能远不如 PNG。 PNG 支持 RGBA 颜色通道和部分透明度。 GIF 使用 256 色调色板,不支持部分透明度。

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

GIF 格式可以追溯到 1980 年代后期,而且时间已经过去了。它早就达到了它的目的。 PNG 是现代的、有能力的并且得到了很好的支持。如果可能的话,您应该从 GIF 切换到使用 PNG。