delphi 图片去底另存为透明
时间: 2023-08-05 08:47:03 浏览: 57
您好!感谢您的提问。针对您的问题,我可以提供以下步骤:
1. 打开 Delphi,新建一个空白项目。
2. 添加一个 TImage 组件,在属性窗口中选择一张需要去底的图片。
3. 在 TImage 的事件中添加以下代码:
```
procedure TForm1.Button1Click(Sender: TObject);
var
png: TPngImage;
x, y: Integer;
bgColor: TColor;
begin
png := TPngImage.CreateBlank(COLOR_RGBALPHA, 8, Image1.Width, Image1.Height);
try
bgColor := Image1.Canvas.Pixels[0, 0]; // 获取背景色
for y := 0 to Image1.Height - 1 do
begin
for x := 0 to Image1.Width - 1 do
begin
if Image1.Canvas.Pixels[x, y] <> bgColor then // 如果当前像素不是背景色,则复制到新图片中
png.Canvas.Pixels[x, y] := Image1.Canvas.Pixels[x, y];
end;
end;
png.SaveToFile('output.png');
finally
png.Free;
end;
end;
```
4. 点击按钮运行程序,在生成的 output.png 文件中即可看到去底后的图片。
注意:为了保证生成的图片为透明 PNG 格式,需要在代码中指定 `COLOR_RGBALPHA`。如果需要对图片进行修改,可以在 `png.Canvas` 上进行绘制操作。同时,本代码会将图片中的背景色去掉,如果您的图片中有多种颜色的背景,则需要修改代码以适应不同的情况。