当我通过下面的例程将PNG图片转换为BMP图片时,BMP中的颜色与原始PNG中的颜色不一样。
procedure TForm1.Button4Click(Sender: TObject);
var
R: TRect;
Bmp: TBitmap;
Png: TPngImage;
begin
Png := TPngImage.Create;
try
Png.LoadFromFile('C:\temp\Source.png');
bmp := TBitmap.Create(Png.Width, Png.Height);
try
R := Rect(0, 0, Png.Width, Png.Height);
bmp.Canvas.CopyRect(R, png.Canvas, R);
bmp.SaveToFile('C:\temp\target.bmp')
finally
Bmp.Free;
end;
finally
Png.Free;
end;
end;
您能给我一个如何解决这个问题的提示吗?
我刚刚测试了以下过程,它可以正常工作,没有任何问题。比较原始 PNG 和结果 BMP 时,颜色看起来与我的人眼相同:
procedure ConvertPNGtoBMP(const PNGFileName, BMPFileName: string);
begin
var PNG := TPNGObject.Create;
var BMP := TBitmap.Create;
try
PNG.LoadFromFile(PNGFileName); // Load the PNG image
BMP.Assign(PNG); // Assign the PNG image to the BMP object
BMP.SaveToFile(BMPFileName); // Save the BMP image
finally
PNG.Free;
BMP.Free;
end;
end;
结果: