gpt4 book ai didi

delphi 将gif转换为具有透明度的png

转载 作者:行者123 更新时间:2023-12-03 15:06:46 24 4
gpt4 key购买 nike

我正在尝试将 gif 转换为 png,这很简单,但问题是结果图像不透明,而且我希望在 png 图像中包含 alpha channel 。

这是我的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
png: TPngImage;
p : TPicture;
begin
p := TPicture.Create;
p.LoadFromFile('C:\temp\php.gif');
png := TPngImage.CreateBlank(COLOR_RGB , 8, p.Width, p.Height);
png.Canvas.Draw(0,0, p.Graphic);
png.SaveToFile('C:\Windows\Temp\test.png');
end;

新图片的背景为黑色,应该是透明的。

如果我尝试在构造函数中添加 ALPHA,则 100% 透明。

png := TPngImage.CreateBlank(COLOR_RGBALPHA , 8, p.Width, p.Height);

最佳答案

由于支持 Delphi XE 2 GDI+,它提供了真正易于使用的转换选项。
您只需要创建 TGPImage 提供图像文件,即可使用所需的编码器(由所需的 mime 类型找到)加载和保存该图像。

uses Winapi.GDIPAPI, Winapi.GDIPOBJ, Winapi.GDIPUTIL;

procedure TForm8.Button1Click(Sender: TObject);
var
encoderClsid: TGUID;
stat: TStatus;
IMG: TGPImage;
begin
IMG := TGPImage.Create('C:\temp\transparent.gif');
try
GetEncoderClsid('image/png', encoderClsid);
stat := IMG.Save('C:\temp\transparent.png', encoderClsid, nil);
finally
IMG.Free;
end;
if (stat = Ok) then
Showmessage('Success');
end;

mime 类型示例:

image/bmp
image/jpeg
image/gif
image/tiff
image/png

关于delphi 将gif转换为具有透明度的png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27184520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com