Nein
daran liegt es nicht.
Ich hab etwas rumprobiert und den Fehler behoben.
Aus irgend einem Grund lädt dieses blöde TJPEG image aus dem Stream, und lädt, und lädt, und lädt.
Da ist mir dann die Idee gekommen die Größe des JPEGs mit in die Datei zu Speichern.
Hier mal der Sourcecode zum Speichern:
Delphi-Quellcode:
if materials.Items[i].fileext = 'jpg' then
begin
ms := TMemoryStream.Create;
jpg := TJpegImage.Create;
jpg.Assign(materials.Items[i].picture.Graphic);
jpg.SaveToStream(ms);
big := ms.Size;
ms.Free;
filestream.Write(big,sizeof(int64)); //<-- Ersteinmal die größe in meinen Stream speichern
jpg.SaveToStream(filestream);
end;
Dann einfach Laden:
Delphi-Quellcode:
if (material.fileext = 'jpg') or (material.fileext = 'jpeg') then
begin
filestream.Read(big,sizeof(int64));
ms := TMemoryStream.Create;
ms.CopyFrom(filestream,big);
jpg := TJpegImage.Create;
ms.Position := 0;
jpg.LoadFromStream(ms);
material.picture.Assign(jpg);
ms.Free;
end;
Die Lösung ist zwar nicht die Eleganteste, geht aber.
Igel457