Delphi下,简单把PixelFormat设为pf24bit就可以了,但在lazarus下则不行。谷歌了很多关键字,没有想要的答案,但也可以找到线索,通过LazIntfImage进行转换。
Procedure Bmp32ToBmp24(src: TBitmap;dest:TBitmap);
var
inf1,inf2:TLazIntfImage;
ImgFormatDescription: TRawImageDescription;
begin
inf2:=TLazIntfImage.Create(src.Width,src.Height);
inf1:= src.CreateIntfImage;
try
ImgFormatDescription.Init_BPP24_B8G8R8_BIO_TTB(src.Width,src.Height);
inf2.DataDescription:=ImgFormatDescription;
inf2.CopyPixels(inf1);
dest.PixelFormat:=pf24bit;
dest.LoadFromIntfImage(inf2);
finally
inf1.free;
inf2.Free;
end;
end;