![]() |
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:
lesen:
myJpeg.Assign(myBitmap);
i := sizeof(myJpeg); FileStream.Write(i,sizeof(integer)); myJpeg.SaveToStream(FileStream);
Delphi-Quellcode:
beides ist nur pseudocode - mir ist auch klar, dass ich einen byte pointer nicht auf ein jpeg assignen kann.
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; 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 |
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 |
Re: jpegs in stream speichern.
Wie sollten einzelne jpg's denn wieder aus dem Stream gelesen werden, wenn deren Größe nicht bekannt ist?
|
Re: jpegs in stream speichern.
Zitat:
Gruß Neutral General |
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:
|
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. |
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.
|
Re: jpegs in stream speichern.
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hier ein kleines Beispielprojekt. Exe liegt auch mit bei. |
Re: jpegs in stream speichern.
Kommt mir bekannt vor, die Lösung :zwinker:
|
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:
|
Re: jpegs in stream speichern.
[OT] Tja, 2 Doofe, ein Gedanke :lol: [/OT]
|
Re: jpegs in stream speichern.
Hallo
Danke für die Antworten. Mit 2 Streams hab ich es eh gemacht und es funktioniert auch. Allerdings wollte ich Laufzeit optimieren. Jpeg erstellen in memory stream size lesen, in filestream mit entpsrechendem offset cardinal. so funktionierts auch. beim einlesen dann wieder in einen memory stream mit dem offset und in ein jpeg laden.. so hab ichs ja eh vom anfang an gehabt. Nur besonders optimal ist das leider nicht - immer dieses umkopieren usw.... da ich live videos aufnehmen will, wollte ich einfach so viel wie möglich einsparen. aber das scheint mit den jpeg objekten in delphi nicht möglich zu sein. schade lg Arnulf Edit: Ich hab mir das beispiel von Die Muhkuh angeschaut. Ja eine nette idee das in eine objekt liste zu stellen - habs jetzt nicht probiert, aber das könnte schon gehen. Das einzige problem ist, dass es im speicher gehalten wird - da hätte ich es gleich in einem memory stream belassen können und mit poisition die bytes auslesen. Das Problem das ich hab, ist dass ich damit ein video darstelle und der Hauptspeicher beim aufnehmen nicht ausreichen könnte bzw. ich auch nicht so belasten will. Also gleich auf die Festplatte soll es ... und dafür ist das auch keine lösung. ( leider hat keine andere methode funktioniert videos live aufzunehmen als das selbst in einen jpeg stream zu speichern ) lg Arnulf |
Re: jpegs in stream speichern.
Hallo Arnulf,
ich weiß nicht, ob das für deinen Anwendungsfall eine Option ist, aber es gibt da noch zwei Ansätze:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 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