Zur speicherung in eine
XML als base64binary übertrage eine JPG Grafik in einen
String.
Code:
function JPEGToBase64String(FileName: String): String;
var
Stream: TFileStream;
begin
Stream := TFileStream.Create(FileName, fmOpenRead);
Result := TIdEncoderMIME.EncodeStream(Stream);
Stream.Free;
end;
Den erzeugten
String speichere ich über eine Stringlist als TXT ab. Diese TXT lade ich mit folgenden Code wieder um den
String zu decodieren und anzuzeigen:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var
Str: String;
Strem: TMemoryStream;
JPG: TJPEGImage;
begin
Str := Path + 'Test.txt'; // die Datei mit dem String
Stream := TMemoryStream.Create;
try
TIdDecoderMIME.DecodeStream(Str, Stream);
Stream.Position := 0;
JPG := TJPEGImage.Create;
try
JPG.LoadFromStream(Stream);
Image1.Picture.Assign(JPG);
finally
JPG.Free;
end;
finally
Stream.Free;
end;
end;
Ergebnis: JPEG Fehler #53, soll heißen kein korrektes JPG, also keine Anzeige
WENN ich aber den
String global als Variable verwende, also NICHT als
String speichere und an die Decodierung gebe geht das alles anstandlos.
Fazit : Beim
speichern des Strings passiert irgendwas damit was letztlich zum Fehler führt. Oder? Und wenn ja was?
creehawk