HI,
das kommt ein wenig darauf an was du wo laufen lässt. Erste Frage ist, was für ein Windows verwendest du? Wie groß ist das Bild (in Pixeln) und wieviel
RAM hast du (wieviel freie Festplatte auf dem Laufwerk mit dem virtuellen Speicher).
Dann ist die nächste Sache, wo wird Bitmap angelegt? Ist es eine lokale Variable? Dann versuch es mal mit einer Klassenvariable.
Das var in JPG_nach_BITMAP kannst du dabei gleich streichen. Du legst keine neue Bitmap an. Da es sich bei einer Variable vom Typ TBitmap um eine Referenz handelt, werden alle Änderungen an der Bitmap automatisch übernommen.
Ansonsten solltest du auch dein Design der Klassen überarbeiten. Einerseits zeichnest du recht umständlich. Du kannst auch einfach:
Delphi-Quellcode:
procedure Jpg2Bitmap(const Jpeg : TJpegImage; const Bitmap : TBitmap);
begin
if assigned(Jpeg) and assigned(Bitmap) then
begin
Jpeg.BitmapNeeded;
Bitmap.Assign(Jpeg);
end;
end;
Allerdings weiß ich nicht, ob du spezielle Eigenschaften der Bitmap hier erhalten möchtest, du könntest jedenfalls ziemlich schlechte Ergebnisse bei unterschiedlich Farbpaletten bekommen.
Ja, was ich eigentlich sagen wollte ist, dass du hier Logik und Darstellung vermischt. Kein Fenster braucht die Methode ein JPEG in eine Bitmap umzuwandeln direkt zu kennen. Besser wäre hier eine eigene Klasse zu Umwandlung (aber ist nur sauberes OO Design, keine Kritik!).
Gruß Der Unwissende