![]() |
vCard-Foto in Image
Hallo Community, ich bin es mal wieder.
Ich arbeite gerade mit der TidVCard-Komponente. Im allgemeinen bin ich eher unzufrieden und habe begonnen, den Text der vCard selbst auseinanderzunehmen. Allerdings hänge ich jetzt am Foto. Wie bekomme ich jetzt den Text des Fotos in ein Image???? |
AW: vCard-Foto in Image
|
AW: vCard-Foto in Image
Ok, aber selbst mit den Funktionen, die ich über eine erneute Google-Suche gefunden habe
![]() funktioniert es nicht. Wobei sich der Text in diesem Beispiel deutlich von meinem unterscheidet. Kannst du mir da vielleicht ein wenig auf die Sprünge helfen? |
AW: vCard-Foto in Image
nun - ja funktioniert nicht ist nicht sehr hilfreich.
Klar unterscheiden sich der Text aus dem Beispiel von dem Deinen. Ansonsten wären es ja die gleichen Bilder. Grüße Klaus |
AW: vCard-Foto in Image
Nein, so war das nicht gemeint. Ich meinte den Aufbau der beiden Texte.
Aber es hat sich scheinbar erledigt. Habe ein passendes Beispiel gefunden, dass ich ein wenig umgebaut habe und das jetzt funktioniert. Für alle die es interessiert:
Delphi-Quellcode:
Schöner wäre es natürlich, nicht über das Speichern und wieder Laden der Datei zu gehen, aber ich habe es auf Biegen und Brechen nicht hinbekommen....
procedure decode(AText: String; AImage:TImage);
var TmpInstream : TMemoryStream; TmpOutstream: TMemoryStream; I : Integer; TmpFile : Textfile; TmpSList : TStringList; TmpFilePath : String; begin TmpInstream := TMemoryStream.Create; TmpOutstream := TMemoryStream.Create; TmpSList := TStringList.Create; try TmpFilePath := ExtractFilePath(ParamStr(0)) + 'tmp.txt'; TmpSList.Text := AText; AssignFile(TmpFile, TmpFilePath); Rewrite(TmpFile); for I := 0 to TmpSList.Count - 1 do begin Writeln(TmpFile, TmpSList[I]); end; CloseFile(TmpFile); TmpInstream.LoadFromFile(TmpFilePath); DecodeStream(TmpInstream,TmpOutstream); AImage.Bitmap.LoadFromStream(TmpOutstream); finally TmpOutstream.Free; TmpInstream.Free; TmpSList.Free; end; end; |
AW: vCard-Foto in Image
Wie wäre es mit einem TStringStream statt der Stringliste?
|
AW: vCard-Foto in Image
.. ein paar Kommentare wäre nicht schlecht.
Was mach decodeStream? Packst Du die ganze vCard in das decodeStream? Was aus Deinem base64 Text wird kannst Du hier testen -> ![]() Grüße Klaus |
AW: vCard-Foto in Image
@DeddyH: Danke für den Tipp, das verkürzt den Code wesentlich!
Delphi-Quellcode:
procedure GetImageFromVCardPhoto(AText: String; AImage:TImage);
var TmpInStream : TMemoryStream; TmpOutStream: TMemoryStream; TmpStrStream: TSTringStream; begin TmpInstream := TMemoryStream.Create; TmpOutstream := TMemoryStream.Create; TmpStrStream := TStringStream.Create; try TmpStrStream.WriteString(AText); TmpInstream.LoadFromStream(TmpStrStream); DecodeStream(TmpInstream,TmpOutstream); AImage.Bitmap.LoadFromStream(TmpOutstream); finally TmpOutstream.Free; TmpInstream.Free; TmpStrStream.Free; end; end; @Klaus01: Entschuldige bitte, ich hätte es tatsächlich erläutern sollen. Im Moment lese ich die vCard doch über die TidVCard-Komponente aus und rufe meine procedure dann folgendermaßen auf:
Delphi-Quellcode:
Das bedeutet, dass es mir mit dieser procedure lediglich um das anzeigen des Fotos aus der vCard geht.
GetImageFromVCardPhoto(TmpidVCard.Photo.EmbeddedData.Text ,Image1);
Der Rest der Daten wird an anderer Stelle ausgelesen! |
AW: vCard-Foto in Image
Delphi-Quellcode:
Dann müsste sich irgendwie noch ermitteln lassen, ob es sich um ein Bitmap, gig oder jpg Photo handelt.
uses
EncdDecd; var stream : TBytesStream; base64 : String; begin if idVCard1.Photo.Base64Encoded then begin base64 := idVCard1.Photo.EmbeddedData.Text; stream := TBytesStream.create(decodeBase64(base64)); try if stream.Size > 0 then begin stream.Seek(0,soBeginning); image1.Picture.Bitmap.LoadFromStream(stream); end; finally stream.Free; end; end; end; Da ich keine vCard zur Hand hatte - habe ich den Code nicht getestet. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz