AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TjpegImage . LoadfromStream

Ein Thema von Mikescher · begonnen am 22. Aug 2010
Antwort Antwort
Benutzerbild von Mikescher
Mikescher

Registriert seit: 3. Jun 2008
Ort: Offenburg
265 Beiträge
 
Delphi 2009 Professional
 
#1

TjpegImage . LoadfromStream

  Alt 22. Aug 2010, 12:52
Delphi-Version: 2010
Hallo Community,

Ich habe hier (wiedermal) ein Virtual String Tree, im OnSaveNode speichere ich mehre TjpegImage. Wer sich nicht mit dem VST auskennt hier die Funktion:
Delphi-Quellcode:
procedure TForm1.VST_MoviesSaveNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  Data: PTreeData;
begin
  Data := VST_Movies.GetNodeData(Node);

  Data.Image.SaveToStream(Stream);
end;
Sprich ich benutze einfach die Funktion SaveToStream von der jpeg unit.

Wenn ich nun diese Datei jedoch wieder lade passiert etwas komisches , zuerst merkt man es dass der Taskmanager mir eine Speicherauslastung für den Prozess von ~ 800 MB anzeigt, Und wenn ich dann das alles wieder speichern will wird auch die Ausgabedatei ca 800MB groß (normalerweise ist sie 6MB groß), letzendlich kann ich diese Datei dann auch nicht mehr laden (jpeg Fehler #42).

Laden tue ich das übrigens auch ganz normal:
Delphi-Quellcode:
procedure TForm1.VST_MoviesLoadNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Stream: TStream);
var
  Data: PTreeData;
begin
  Data := VST_Movies.GetNodeData(Node);

  Data.Cover := TjpegImage.Create;

  Data.Cover..LoadFromStream(Stream);
end;
So um das ganze jetzt noch richtig merkwürdig zu machen habe ich follgende Konstellation gestestet:
Erst das ganze in ein jpegImage vom Steeam laden dass mit Assign einem TBitmap zuweisen und dann wieder mit Assign einem TjpegImage.
Delphi-Quellcode:
  Data.Cover := TjpegImage.Create;
  tmpjpeg := TjpegImage.Create;
  tmpBmp := Tbitmap.Create;

  tmpjpeg.LoadFromStream(Stream);
  tmpBmp.Assign(tmpjpeg);
  Data.Cover.Assign(tmpBmp);

  tmpBmp.Free;
  tmpjpeg.Free;
Und... naja... hier funktioniert es, Man kann die jpegs laden, verwenden und speichern (mit einer 6MB Ausgabedatei).



Ich weiss nicht ob ich einen Fahler beim jpeg.LoadfromStream gefunden habe, oder ich einfach selber irgendwo "Müll" zusammengeschrieben habe, jedoch hoffe ich dass jemand von euch mir helfen kann

Mit freundlichen Grüßen Mike
Mike
Operation gelungen, Patient tot.

http://www.mikescher.com
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:30 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