作者:剛強是什麼 | 来源:互联网 | 2023-01-16 20:51
我想将图像调整为64*64的预定义位图,无论其当前尺寸和宽高比如何.我尝试Bitmap.ReSize
但保持纵横比.我试过TImage
并设置WrapMode
为iwStretch
.这在某种程度上起作用,因为它确实按照我想要的方式重新缩放图像,但我找不到一种方法来获取图像TImage
.该Bitmap
属性TImage
仍包含原始位图.
有人知道如何从TImage
屏幕上显示的图像中获取图像吗?或者甚至更好:指向一个能够进行这种调整和拉伸的功能?如果有,我错过了.
谢谢你的时间.
1> Tom Brunberg..:
要拉伸图像,Fmx
您不需要使用TImage
.我明白你真的不想用a 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
矩形.