AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schnelles Laden von jpegs [Speicherleck]
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelles Laden von jpegs [Speicherleck]

Ein Thema von Nicolai1234 · begonnen am 25. Sep 2005 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
Seite 2 von 2     12   
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Schnelles Laden von jpegs [Speicherleck]

  Alt 25. Sep 2005, 22:00
Das Speicherleck mit dem Result ist jetzt aber noch nicht behoben worden, oder?

Die Lösung vn oben, verstehe ich nicht so ganz...
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Schnelles Laden von jpegs [Speicherleck]

  Alt 25. Sep 2005, 23:17
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;
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#13

Re: Schnelles Laden von jpegs [Speicherleck]

  Alt 28. Sep 2005, 21:41
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz