设置TPngImage的颜色类型

时间:2018-02-05 02:31:21

标签: delphi png

我正在使用Delphi的TPngImage类将BMP图像(TBitmap)转换为PNG,方法是将相应的TBitmap对象及其中的位图图像分配给新创建的{ {1}}对象。

我需要将颜色类型设置为TPngImage以创建索引RGB PNG。

我没有设法找到COLOR_PALETTE类的任何可以执行此操作的属性。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

您可以在CreateBlank构造函数中指定颜色类型,而不是简单地在PNG图像画布上刷新位图。例如:

var
  R: TRect;
  Bmp: TBitmap;
  Png: TPngImage;
begin
  Bmp := TBitmap.Create;
  try
    Bmp.LoadFromFile('C:\Source.bmp');
    Png := TPngImage.CreateBlank(COLOR_PALETTE, 8, Bmp.Width, Bmp.Height);
    try
      R := Rect(0, 0, Bmp.Width, Bmp.Height);
      Png.Canvas.CopyRect(R, Bmp.Canvas, R);
      Png.SaveToFile('C:\Target.png');
    finally
      Png.Free;
    end;
  finally
    Bmp.Free;
  end;
end;