我正在使用Delphi的TPngImage
类将BMP图像(TBitmap
)转换为PNG,方法是将相应的TBitmap
对象及其中的位图图像分配给新创建的{ {1}}对象。
我需要将颜色类型设置为TPngImage
以创建索引RGB PNG。
我没有设法找到COLOR_PALETTE
类的任何可以执行此操作的属性。
任何人都可以帮助我吗?
答案 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;