我想将图像大小调整为64 * 64的预定义位图,而不考虑其当前尺寸和纵横比。我试过Bitmap.ReSize
,但保持宽高比。我尝试了TImage
并将WrapMode
设置为iwStretch
。这在一定程度上有效,因为它确实可以按我的要求重新缩放图像,但是我找不到从TImage
中获取该图像的方法。 Bitmap
的TImage
属性仍包含原始位图。
有人知道如何从屏幕上显示的TImage
获取图像吗?甚至更好:将我指向具有这种大小调整和拉伸功能的函数?如果有一个,我错过了。
谢谢你的时间。
最佳答案
要在Fmx
中拉伸图像,无需使用TImage
。我了解您确实不希望使用TImage
,解决方案如下:
var
bmpA, bmpB: TBitmap;
src, trg: TRectF;
begin
bmpA := nil;
bmpB := nil;
try
bmpA := TBitmap.Create;
bmpA.LoadFromFile('C:\tmp\Imgs\149265645.jpg');
bmpB:= TBitmap.Create;
bmpB.SetSize(64, 64);
src := RectF(0, 0, bmpA.Width, bmpA.Height);
trg := RectF(0, 0, 64, 64);
bmpB.Canvas.BeginScene;
bmpB.Canvas.DrawBitmap(bmpA, src, trg, 1);
bmpB.Canvas.EndScene;
bmpB.SaveToFile('C:\tmp\Imgs\149265645_take_two.bmp');
finally
bmpA.Free;
bmpB.Free;
end;
end;
您让
bmpB.Canvas
绘制bmpA
位图,并同时根据src
和trg
矩形调整图像的大小。