我正在使用 Delphi 10.4.2,并且我有一个可以缩放图像(BMP、GIF、PNG、...)的应用程序。
我的问题是,如果输入图像是透明 BMP,则输出 BMP 不是透明的,而是黑色背景。当输入是透明 PNG 并且我想输出 BMP 时,也会发生这种情况。我怎样才能避免这种情况?
示例代码:
procedure TFrmTestGenImg.Resize;
var
LInputImgPath, LOutputImgPath: string;
LImageIn, LImageOut: TWICImage;
LBitmap: TBitmap;
begin
LInputImgPath := 'C:\temp\Input.bmp';
LOutputImgPath := 'C:\temp\Output.bmp';
LImageIn := TWICImage.Create;
try
LImageOut := TWICImage.Create;
try
LImageIn.Transparent := True;
LImageIn.LoadFromFile(Trim(LInputImgPath));
LBitmap := TBitmap.Create;
try
LBitmap.PixelFormat := pf32bit;
LBitmap.Assign(LImageIn);
LBitmap.Transparent := True;
{ ... Resizing bitmap ... }
LImageOut.Assign(LBitmap);
LImageOut.ImageFormat := wifBmp;
LImageOut.Transparent := LImageIn.Transparent;
LImageOut.SaveToFile(LOutputImgPath);
finally
LBitmap.Free;
end;
finally
LImageOut.Free;
end;
finally
LImageIn.Free;
end;
end;