Hat sich erledigt mir ist doch noch was eingefallen.
Wenns noch jemand interessiert ist hier meine Lösung (als Erweiterung des FileStreams)
Delphi-Quellcode:
procedure TFileStreamEx.WritePicture(Pic: TPicture);
var
Typ: Byte;
Len: Integer;
MS: TMemoryStream;
begin
if Pic.Graphic is TBitmap then
begin
Typ := FILETYPE_BMP;
Write(Typ, SizeOf(Typ));
Pic.Bitmap.SaveToStream(self);
end
else if Pic.Graphic is TJpegImage then
begin
Typ := FILETYPE_JPG;
Write(Typ, SizeOf(Typ));
MS := TMemoryStream.Create;
try
Pic.Graphic.SaveToStream(MS);
Len := MS.Size;
WriteInteger(Len);
CopyFrom(MS, 0);
finally
MS.Free;
end;
end;
end;
procedure TFileStreamEx.ReadPicture(Pic: TPicture);
var
Typ: Byte;
Len: Integer;
MS: TMemoryStream;
begin
Read(Typ, SizeOf(Typ));
if Typ = FILETYPE_BMP then
begin
Pic.Bitmap := TBitmap.Create;
Pic.Bitmap.LoadFromStream(self);
end
else if Typ = FILETYPE_JPG then
begin
Pic.Graphic := TJpegImage.Create;
Len := ReadInteger;
MS := TMemoryStream.Create;
try
MS.CopyFrom(self, Len);
MS.Position := 0;
Pic.Graphic.LoadFromStream(MS);
finally
MS.Free;
end;
end;
end;
[Edit]
FILETYPE_BMP und FILETYPE_JPG sind Byte-Konstanten
WriteInteger/ReadInteger gehören auch zu meinem FileStreamEX und sind nur zur leichteren Bedinung da[/Edit]