Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

How to scale bitmap by percent?

01.01.2007
{ .... }
 
private
   
function ScalePercentBmp(bitmp: TBitmap; iPercent: Integer): Boolean;
{ .... }
 
function TForm1.ScalePercentBmp(bitmp: TBitmap;
  iPercent
: Integer): Boolean;
var
 
TmpBmp: TBitmap;
 
ARect: TRect;
  h
, w: Real;
  hi
, wi: Integer;
begin
 
Result := False;
 
try
   
TmpBmp := TBitmap.Create;
   
try
      h
:= bitmp.Height * (iPercent / 100);
      w
:= bitmp.Width * (iPercent / 100);
      hi
:= StrToInt(FormatFloat('#', h)) + bitmp.Height;
      wi
:= StrToInt(FormatFloat('#', w)) + bitmp.Width;
     
TmpBmp.Width := wi;
     
TmpBmp.Height := hi;
     
ARect := Rect(0, 0, wi, hi);
     
TmpBmp.Canvas.StretchDraw(ARect, Bitmp);
      bitmp
.Assign(TmpBmp);
   
finally
     
TmpBmp.Free;
   
end;
   
Result := True;
 
except
   
Result := False;
 
end;
end;
// Example:
procedure TForm1
.Button1Click(Sender: TObject);
begin
 
ScalePercentBmp(Image1.Picture.Bitmap, 33);
end;

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php