Delphi png 到 bmp 转换 - 结果

问题描述 投票:0回答:1

当我通过下面的例程将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;

您能给我一个如何解决这个问题的提示吗?

delphi png vcl bmp
1个回答
0
投票

我刚刚测试了以下过程,它可以正常工作,没有任何问题。比较原始 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;

结果:

PNG to BMP Conversion results using the Delphi Programming Language

© www.soinside.com 2019 - 2024. All rights reserved.