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