使用 TCameraComponent

Working with TCameraComponent

我正在尝试使用以下代码调整捕获的 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 像素。

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);