![]() |
Re: Schnelles Laden von jpegs [Speicherleck]
Das Speicherleck mit dem Result ist jetzt aber noch nicht behoben worden, oder?
Die Lösung vn oben, verstehe ich nicht so ganz... |
Re: Schnelles Laden von jpegs [Speicherleck]
Bastel es doch um, so dass erst gar keine Speicherlecks mehr entstehen können:
Delphi-Quellcode:
procedure SchnelleVorschaubilder(Datei: String; Groesse: Integer; Ziel: TBitmap);
var JPG: TJPEGImage; Bitm: Tbitmap; Hoehe, Weite, X: integer; Verh: Double; begin JPG := TJPEGImage.Create; Bitm := TBitmap.Create; try JPG.LoadFromFile(Datei); JPG.Scale := jsEighth; Bitm.Assign(JPG); if (Bitm.Height > 0) AND (Bitm.Width > 0) then begin Verh := Bitm.Width/Bitm.Height; Ziel.Width := Groesse; Ziel.Height := Groesse; if Verh >= 1 then begin Hoehe := Round(Groesse/Verh); x := round((Groesse-Hoehe)/2); Ziel.canvas.StretchDraw(Rect(0,X,Groesse,Hoehe+X),Bitm); end else begin Weite := Round(Groesse*Verh); X := round((Groesse-Weite)/2); Ziel.Canvas.StretchDraw(Rect(x,0,Weite+x,Groesse),Bitm); end; end; finally FreeandNil(Bitm); FreeandNil(JPG); end; end; |
Re: Schnelles Laden von jpegs [Speicherleck]
Man kann auch das Bitmap Property von TJPegImage nutzen indem man es in einer Ableitung veröffentlicht.
TAdvJPegIMage=class(TJPegImage) public property Bitmap: TBitmap; end; Bezogen auf die ursprüngliche Frage bedeutet das: 1. Bild laden 2. Property Scale setzen 3. Bitmap in eine Paintbox malen img: TAdvJPegIMage; img.loadfromfile(...); img.scale := "jsViertel" -> weiss gerade nicht die genaue Bezeichnung paintbox1.cancas.draw(0,0,img.bitmap.handle) -> so im Prinzip |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz