Das war ein wunderbarer Hinweis. Ich habe mal probehalber auf TWICImage umgestellt und siehe da, plötzlich sind alle 24 Kerne voll ausgelastet und die Speicherbefüllung steigt langsam und linear bis auf 65% und verharrt dann dort; und das trotz einiger Umkopiererei. Sehr nützlich war diese Routine von
hier ("High quality bitmap resize with transparency"):
Delphi-Quellcode:
Uses
Winapi.Wincodec,
Vcl.Graphics;
procedure ResizeBitmap(Bitmap: TBitmap;
const NewWidth, NewHeight: integer);
var
Factory: IWICImagingFactory;
Scaler: IWICBitmapScaler;
Source : TWICImage;
begin
Bitmap.AlphaFormat := afDefined;
Source := TWICImage.Create;
try
Factory := TWICImage.ImagingFactory;
Source.Assign(Bitmap);
Factory.CreateBitmapScaler(Scaler);
Scaler.Initialize(Source.Handle, NewWidth, NewHeight,
WICBitmapInterpolationModeHighQualityCubic);
Source.Handle := IWICBitmap(Scaler);
Bitmap.Assign(Source);
Scaler :=
nil;
Factory :=
nil;
finally
Source.Free;
end;
end;
Dieses TWICImage muss ich mir noch genauer anschauen.