【发布时间】:2015-08-26 01:15:04
【问题描述】:
如何在保持透明度的情况下将 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 支持具有 alpha 透明度的完整 RGB 颜色。 GIF 有 256 个调色板和每像素透明度。人们不得不问为什么您选择使用这种劣质的图像格式。现在是 2015 年!
-
@DavidHeffernan PNG 也支持 8 位索引模式
-
@DavidHeffernan 我的错!我读到他想将 GIF 转换为 PNG,这很容易做到,因为 PNG(无动画)在功能方面是 GIF 的超集(aPNG 和 MNG 可能是严格的超集)。 PNG到GIF确实只能在简单的情况下完成
-
是时候停止使用 GIF 了。它拖累了你。
-
@X-Ray FastReports 可以毫无问题地处理 PNG。