Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi jpegs in stream speichern. (https://www.delphipraxis.net/118095-jpegs-stream-speichern.html)

Arnulf 31. Jul 2008 12:16


jpegs in stream speichern.
 
Hi
Ich will Jpegs in einen Stream speichern und wieder auslesen.
Im prinzip hab ich mir gedacht ich nehm die größe des jpegs als integer und speicher das vor jedes bild das ich in den stream kopiere.

Allerdings weiß ich nicht wie ich die größe des jpegs im stream bekomme bevor ich das als stream gespeichert habe.

Beispiel:
wobei mir klar ist, dass sizeof nur die größe des pointers liefert also 4
auch ist fraglich, ob mJpeg.SaveToStream den stream wirklich richtig positioniert - aber ich glaube schon.

schreiben:
Delphi-Quellcode:
     myJpeg.Assign(myBitmap);
     i := sizeof(myJpeg);
     FileStream.Write(i,sizeof(integer));
     myJpeg.SaveToStream(FileStream);
lesen:
Delphi-Quellcode:
var
  pbyte : ^BYTE;
  i    : integer;
playstream := TFileStream.Create('myFile.jps',fmOpenRead);
while playstream.Position <= playstream.Size-1 do
begin
     playStream.Read(i,sizeof(integer));
     playStream.Read(pByte,i);
     myJpeg.Assign(pByte);
end;
beides ist nur pseudocode - mir ist auch klar, dass ich einen byte pointer nicht auf ein jpeg assignen kann.
Aber dort liegen meine probleme.
Die Einzige lösung die ich dazu hätte wäre das alles vorher in einen memory stream zu kopieren
Die größe abzufragen, das in einen filestream kopieren.
beim lesen dann wieder umgekehrt.
so würde ich die bilder schon wieder einzeln bekommen.
Aber das ganze erzeugt einen ordentlichen overhead den ich gerne vermeiden würde.

lg
Arnulf

riko.delphipraxis 15. Aug 2008 09:16

Re: jpegs in stream speichern.
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo arnulf,

ich weiss ja nicht wozu du die größe brauchst, aber die steht in stream.size...

anbei ein kleines beispiel (1. - 2. - 3. Button)...

lg.
Richard

taaktaak 15. Aug 2008 09:26

Re: jpegs in stream speichern.
 
Wie sollten einzelne jpg's denn wieder aus dem Stream gelesen werden, wenn deren Größe nicht bekannt ist?

Neutral General 15. Aug 2008 09:27

Re: jpegs in stream speichern.
 
Zitat:

Zitat von taaktaak
Wie sollten einzelne jpg's denn wieder aus dem Stream gelesen werden, wenn deren Größe nicht bekannt ist?

Genau das ist doch sein Problem. Aber die Lösung hat riko.delphipraxis schon gepostet.

Gruß
Neutral General

taaktaak 15. Aug 2008 09:32

Re: jpegs in stream speichern.
 
Schon klar! Sollte eine Antwort auf die Frage von riko sein, dem offenbar nicht klar war, wozu die Größe benötigt wird :wink:

Die Muhkuh 15. Aug 2008 10:37

Re: jpegs in stream speichern.
 
Hi,

ich lese aus dem Post des Erstellers, dass er mehrere Jpegs in einem Stream speichern möchte. Bei Riko ist das nur ein Jpeg in einem Stream.

DeddyH 15. Aug 2008 11:08

Re: jpegs in stream speichern.
 
Nur eine Idee: mit 2 Streams arbeiten. Zunächst die Grafik in den einen laden, dessen Größe ermitteln, diese in den "Hauptstream" schreiben und mit CopyFrom hintendrankopieren. Anschließend den temporären Stream auf Größe 0 setzen und das Ganze von vorn. Wenn ich keinen Denkfehler gemacht habe, hat man jetzt immer schön das Offset zur nächsten Grafik im Hauptstream und kann sich somit durchhangeln.

Die Muhkuh 15. Aug 2008 11:13

Re: jpegs in stream speichern.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

hier ein kleines Beispielprojekt.

Exe liegt auch mit bei.

DeddyH 15. Aug 2008 11:43

Re: jpegs in stream speichern.
 
Kommt mir bekannt vor, die Lösung :zwinker:

Die Muhkuh 15. Aug 2008 11:59

Re: jpegs in stream speichern.
 
Die hatte ich schon getippt, bevor Du geschrieben hast. Ich hab Dein Post erst gelesen, als ich das Ding hier reinstellen wollte. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Seite 1 von 2  1 2      

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