在 VCL 底下,把一个 Bitmap 变成 JPEG,是采用将 TBitmap 的内容赋值给 TJpegImage 的方式。
在 FireMonkey 底下该怎么做?
看到论坛有人提问,上网查了一下资料,自己写代码测试了一下。以下代码测试通过:
uses FMX.Surfaces;
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
Src, Trg: TRectF;
NewWidth, NewHeight: Integer;
AStream: TFileStream;
Surf: TBitmapSurface;
begin
if OpenDialog1.Execute then
begin
Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);
Src := RectF(0, 0, Image1.Bitmap.Width, Image1.Bitmap.Height);
//这里缩小一半
NewWidth := Trunc(Image1.Bitmap.Width / 2);
NewHeight := Trunc(Image1.Bitmap.Height / 2);
Trg := RectF(0, 0, NewWidth, NewHeight);
Bmp := TBitmap.Create;
try
Bmp.Width := NewWidth;
Bmp.Height := NewHeight;
Bmp.Canvas.BeginScene;
try
Bmp.Canvas.DrawBitmap(Image1.Bitmap, Src, Trg, 1)
finally
Bmp.Canvas.EndScene;
end;
Image2.Bitmap.Assign(Bmp);

本文介绍在FireMonkey环境下将TBitmap转换为JPEG格式的方法。包括如何缩放图像、使用TBitmapSurface保存到文件和流中,并利用TBitmapCodecManager进行格式转换。
最低0.47元/天 解锁文章
1463

被折叠的 条评论
为什么被折叠?



