AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Image als Base64 codieren. Unterschiede FMX und VCL
Thema durchsuchen
Ansicht
Themen-Optionen

Image als Base64 codieren. Unterschiede FMX und VCL

Ein Thema von GS1200 · begonnen am 9. Jun 2014 · letzter Beitrag vom 9. Jun 2014
Antwort Antwort
GS1200

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

Image als Base64 codieren. Unterschiede FMX und VCL

  Alt 9. Jun 2014, 21: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
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.530 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Image als Base64 codieren. Unterschiede FMX und VCL

  Alt 9. Jun 2014, 22:46
In Wahrheit speichet Fmx die Grafik nicht als Bitmap sondern im png-format. Du musst eine eigene Lösung entwickeln, um in den Stream das Bitmap- Format zu speichern. Wie das geht, habe ich schon mal im Zusammenhang mit der Übergabe eines Bitmap-Streams an eine Dll gezeigt, das kannst Du hier nachlesen:

http://devpage.de/blog/firemonkey.htm

Das Beispiel gilt für XE5 und wohl auch XE6 (evtl. auch schon XE4, weiß es im Moment leider nicht auswendig).

Geändert von Harry Stahl ( 9. Jun 2014 um 22:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz