AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

vCard-Foto in Image

Ein Thema von sintronic86 · begonnen am 2. Aug 2013 · letzter Beitrag vom 2. Aug 2013
Antwort Antwort
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

vCard-Foto in Image

  Alt 2. Aug 2013, 10:41
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????
Björn
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 10:47
Hallo,

das englische Wiki sagt, dass der Text base64 codiert ist.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 12:31
Ok, aber selbst mit den Funktionen, die ich über eine erneute Google-Suche gefunden habe
http://www.qa.downappz.com/questions...-delphi-4.html,
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?
Björn
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 12:41
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
Klaus
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 13:11
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:
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;
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....
Björn
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 13:14
Wie wäre es mit einem TStringStream statt der Stringliste?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 13:16
.. 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 -> http://www.opinionatedgeek.com/dotne.../base64decode/

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
sintronic86

Registriert seit: 7. Dez 2009
Ort: Barsinghausen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 13:30
@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:

GetImageFromVCardPhoto(TmpidVCard.Photo.EmbeddedData.Text ,Image1); Das bedeutet, dass es mir mit dieser procedure lediglich um das anzeigen des Fotos aus der vCard geht.
Der Rest der Daten wird an anderer Stelle ausgelesen!
Björn
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: vCard-Foto in Image

  Alt 2. Aug 2013, 18:26
Delphi-Quellcode:
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;
Dann müsste sich irgendwie noch ermitteln lassen, ob es sich um ein Bitmap, gig oder jpg Photo handelt.

Da ich keine vCard zur Hand hatte - habe ich den Code nicht getestet.

Grüße
Klaus
Klaus

Geändert von Klaus01 ( 2. Aug 2013 um 21:19 Uhr) Grund: nochmal alles umgebaut
  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 23:11 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