使用TCameraComponent

时间:2017-04-03 15:34:27

标签: delphi firemonkey delphi-10-seattle

我正在尝试使用以下代码调整捕获的TCameraComponent图像的大小:

procedure TForm1.GetImage;
begin
  imagec.SampleBufferToBitmap(img.Bitmap, True);

  with resizedimg.Bitmap do // Resize the image to another bitmap
  begin
    SetSize(300, 160);
    if Canvas.BeginScene then
    try
      Canvas.DrawBitmap(img.Bitmap, TRectF.Create(0, 0, 300, 160), TRectF.Create(0, 0, 300, 160), 1.0);
    finally
      Canvas.EndScene;
    end;
  end;
end;

但是,每次关闭相机并再次重新打开相机时,调整大小的图像会捕获实际TImage的缩放部分。为什么会出现这种情况?我做错了什么?

目标是调整img.Bitmap的大小以适应300x160像素。

1 个答案:

答案 0 :(得分:5)

DrawBitmap()的第二个参数应该是正在绘制的img.Bitmap的原始大小,而不是您尝试调整大小的大小。

Canvas.DrawBitmap(img.Bitmap, TRectF.Create(0, 0, img.Bitmap.Width, img.Bitmap.Height), TRectF.Create(0, 0, 300, 160), 1.0);

在柏林及以后,TBitmap有一个BoundsF属性,您可以使用。

Canvas.DrawBitmap(img.Bitmap, img.Bitmap.BoundsF, TRectF.Create(0, 0, 300, 160), 1.0);