Hi!
Ich habe ein 35 MegaPixel-Bild und möchte bestimmte Ausschnitte dieses Bildes schnell erhalten.
Leider benötigt TGPGraphics.DrawImage zu lange um den Auschnitt aus dem Original in meinen Kontext zu zeichnen (Zeitmessung durchgeführt).
(Der genaue Hintergrund ist ein ScrollBox bei der man in Bilder zoomen kann und dann scrollt)
Delphi-Quellcode:
ClientRect := Parent.ClientRect;
TempBitmap := TGPBitmap.Create(Min(Width, ClientRect.Right), Min(Height, ClientRect.Bottom));
DestRect := MakeRect(0, 0, Integer(TempBitmap.GetWidth), Integer(TempBitmap.GetHeight));
GetSrcRect; //lädt in SrcRect den aktuellen Auschnitt
TempGraphics := TGPGraphics.Create(TempBitmap);
TempGraphics.SetSmoothingMode(SmoothingModeNone);
TempGraphics.SetInterpolationMode(InterpolationModeBilinear); //schon alle möglichen durchprobiert
//FGPImage ist das Original mit 35MP
TempGraphics.DrawImage(FGPImage, DestRect, SrcRect.Left, SrcRect.Top, SrcRect.Right, SrcRect.Bottom, UnitPixel); //das dauert
Klar habe ich die Idee unächst den Auschnitt von einer kleineren Version zu nehmen. Ich möchte aber evaluieren, ob DrawImage tatsächlich so lange benötigt und welche Gründe es dafür gibt.
Grüße
Sebastian