おねがいです、以下の仕様で最速の実装をしてください。
なお、宿題とは関係ありません。自分で書いたコードもあります。
要望があれば公開します。
私が作ったコードでは、1024*786*24BITで
15−20秒ほどかかります

{ Source で指定された画像を Scale 倍したものを
Dest に描画する。Dest のサイズも同時に設定される。
拡大縮小時には線形補完を用いて、そこそこ高画質にする。
Source は 24Bit カラーである事を前提とする }

function Zoom(Source,Dest:TBItmap; Scale:Extended);begin
 if Scale = 1 then
  Dest.Assign( Source );
  Exit;
 end;

 Dest.Width := Floor( Source.Width * Scale );
 Dest.Height := Floor( Source.Height * Scale );

 { なんたらかんたら }

end;