Nur ne kleine Anmerkung:
Delphi-Quellcode:
Image1.Picture:=temp; // #1
temp.Free; // #2
temp:=TPicture.Create;
Das hier sieht sehr suspekt aus.
Du kopierst bei #1 eine Instanz und nicht den Inhalt der Instanz. Wird der Inhalt der Instanz gelöscht (#2), so ist die Instanz nutzlos und die Verwendung derer wird zu Problemen führen.
Kopiere lieber den Inhalt per Image1.Picture.Assign() (sofern Assign vorhanden).