【发布时间】:2010-11-24 21:12:45
【问题描述】:
如何从 XMPP vcard(头像图片,我认为是 JPEG 格式)中读取照片并将其显示在 Delphi TImage 控件中?
XMPP 服务器发送这个 XML:
<presence id="e3T50-75" to="cvg@esx10-2022/spark" from="semra@esx10-2022"
type="unavailable">
<x xmlns="vcard-temp:x:update">
<photo>897ce4538a4568f2e3c4838c69a0d60870c4fa49</photo>
</x>
<x xmlns="jabber:x:avatar">
<hash>897ce4538a4568f2e3c4838c69a0d60870c4fa49</hash>
</x>
</presence>
【问题讨论】:
-
这是一个 phyton 示例,但我需要 delphi collincode.wordpress.com/2009/01/31/xmpp-jabber-photo-module-2
-
正如 Python 函数
recieve_vcard()所示,这只是 base64 编码的数据。使用 StackOverflow 上的“[delphi] base64”搜索来查找用于编码和解码这种格式的大量链接和示例代码。 -
@mghie:为什么不把这个写成答案,这样它才能被接受?
-
@Lars:我不认为这是一个答案,只是对正确方向的帮助。希望有人(甚至可能是 OP)发布一些回答问题的代码。我只是快速浏览了链接的 Python 代码。
-
感谢 Rob Kenndy,但我收到了一些错误 Jpeg error #53 implementation uses omnixmlutils; {$R *.dfm} ...function ChooseGraphicClass(const MimeType: string): TGraphicClass; ...函数 CreateGraphicFromVCardPhoto(const BinVal, MimeType: string): TGraphic;过程 TForm1.Button1Click(Sender: TObject);开始 memo1.lines.loadfromfile('c:\cvg.bin'); image1.Picture.Graphic := CreateGraphicFromVCardPhoto(memo1.text,'image/jpeg');结尾; { cvg.bin 文件在这里 anasel.com.tr/cvgxml.txt } { anasel.com.tr/cvg.bin}