Die Funktion hat 3 speicherrelavante Variablen: Ein Bitmap, ein JPEG-Image und das Result-Bitmap. Zwei davon werden am Ende freigegeben. Du musst das Result manuell freigeben, wenn du ein neues Vorschaubild zeichnest. Also einfach vorher abfragen:
Delphi-Quellcode:
if ImageX.Picture.Bitmap <> nil then
ImageX.picture.bitmap.freeImage;
Dann dürfte es kein Speicherleck mehr sein.
Alternative: Du schreibst die Funktion um: In eine Prozedur, die auf ein bestehendes Bild malt und nicht immer wieder ein neues erstellt...