我使用 Delphi 10.3.3 VCL。
我想加载一个PNG图像,转换为TBitmap(为了进行一些修改),然后将其保存为PNG。
我使用这个代码,但它失去了透明度。透明背景变为黑色。
var
InputPNG: TPngImage;
OutputPNG: TPngImage;
BMP: TBitmap;
begin
InputPNG := TPngImage.Create;
OutputPNG := TPngImage.Create;
BMP := TBitmap.Create;
InputPNG.LoadFromFile('C:\input.png');
BMP.Assign(InputPNG);
OutputPNG.Assign(BMP);
OutputPNG.SaveToFile('C:\output.png');
InputPNG.Free;
OutputPNG.Free;
BMP.Free;
end;
如何修改代码并保持PNG透明?欢迎任何带有免费组件的解决方案,如Skia4Delphi。
3条答案
按热度按时间6ie5vjzr1#
使用TWICImage保存到文件。这将保留alpha通道:
请注意,每当您使用VCL.Graphics将png分配给bmp时,位图将具有Alphaformat = afDefined,这意味着RGB通道乘以alpha。如果你现在修改位图的字母通道,这可能会导致意想不到的结果。我总是在做任何修改之前设置bmp.Alphaformat:=afIgnored。
elcex8rz2#
尝试在分配PNG图像之前添加这些行。
iyzzxitl3#
使用以下代码: