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