Einzelnen Beitrag anzeigen

GS1200

Registriert seit: 16. Jul 2006
26 Beiträge
 
#1

Image als Base64 codieren. Unterschiede FMX und VCL

  Alt 9. Jun 2014, 20:50
Delphi-Version: 5
Hallo zusammen,

ich habe folgendes Problem:

Ich will via WEB-Service eine Unterschrift versenden. (Beispiel aus dem Video: YouTube) Das Erstellen klappt einwandfrei. Dazu codiere ich den Stream als Base64 und sende dieses. Der WEB-Service kann aber die Base64 Datei nicht entschlüsseln. Lese ich die Datei (Zwischengespeichert als Textdatei) in eine Testroutine (FMX ImageControl.Bitmap) klappt es einwandfrei.
Ich vermute hier ein Formatunterschied JPeg, BMP etc. aber wie kann ich bei einem Stream das Format mitgeben?

So erstelle ich den Base64 String und sende diesen über den WEB-Service:
Delphi-Quellcode:
...
stream := TMemoryStream.Create();
ImageControl1.Bitmap.SaveToStream(stream);
encodeString := EncodeBase64(stream.Memory, stream.Size);

unt.UnterschriftB64 := encodeString;

WS := TWebServices.Create();
er := WS.AusgabeMitUnterschrift(unt);
...

Mit diesem Test lese ich die als Text zwischengespeicherte Datei ein, Anzeige Problemlos:
Delphi-Quellcode:
...
b64 := TStringList.Create();
b64.LoadFromFile('Bild_DatenB64.txt');
// Test ob Bild enthalten...
OutStr := TBytesStream.Create(DecodeBase64(b64.Text));
//OutStr := TBytesStream.Create(DecodeBase64(unt.UnterschriftB64));
ImageControl2.Bitmap.LoadFromStream(OutStr);
...
Diese VCL-Anwendung kann daraus aber kein Bildmachen....

Delphi-Quellcode:
...
str := TStringList.Create();
str.loadFromFile('Bild_DatenB64.txt');
OutStr := TBytesStream.Create(DecodeBase64(str.Text));
image1.Picture.Bitmap.LoadFromStream(OutStr);
...
Ich habe die Base64.txt mal als Beispiel in der Anlage abgelegt.

Was kann das sein?

Gruß

Axel
Angehängte Dateien
Dateityp: txt Bild_DatenB64.txt (29,0 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat