gpt4 book ai didi

image - 如何从位图创建透明 png 图像?

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

我的任务是:

  1. 创建一个 TBitmap 对象。
  2. 用透明颜色填充(alpha = 0)。
  3. 将此位图分配给 TPngImage。
  4. 保存具有 Alpha 透明度的 PNG 文件。

如何在 Delphi XE 中做到这一点?

var
Png: TPngImage;
X, Y: Integer;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create();
Bitmap.PixelFormat := pf32bit;
Png := TPngImage.Create();
try
Bitmap.SetSize(100, 100);

// How to clear background in transparent color correctly?
// I tried to use this, but the image in PNG file has solid white background:
for Y := 0 to Bitmap.Height - 1 do
for X := 0 to Bitmap.Width - 1 do
Bitmap.Canvas.Pixels[X, Y]:= $00FFFFFF;

// Now drawing something on a Bitmap.Canvas...
Bitmap.Canvas.Pen.Color := clRed;
Bitmap.Canvas.Rectangle(20, 20, 60, 60);

// Is this correct?
Png.Assign(Bitmap);
Png.SaveToFile('image.png');
finally
Png.Free();
Bitmap.Free();
end;
end;

最佳答案

或多或少是 Dorin's answer 的副本。它展示了如何制作透明的 png 图像以及如何清除背景。

uses
PngImage;
...

var
bmp: TBitmap;
png: TPngImage;
begin
bmp := TBitmap.Create;
bmp.SetSize(200,200);

bmp.Canvas.Brush.Color := clBlack;
bmp.Canvas.Rectangle( 20, 20, 160, 160 );

bmp.Canvas.Brush.Style := bsClear;
bmp.Canvas.Rectangle(1, 1, 199, 199);

bmp.Canvas.Brush.Color := clWhite;
bmp.Canvas.Pen.Color := clRed;
bmp.Canvas.TextOut( 35, 20, 'Hello transparent world');

bmp.TransparentColor := clWhite;
bmp.Transparent := True;

png := TPngImage.Create;
png.Assign( bmp );
png.SaveToFile( 'C:\test.png' );

bmp.Free;
png.Free;
end;

关于image - 如何从位图创建透明 png 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012761/

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