PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilddaten in vCard speichern



sallo
05-07-2007, 21:31
Hallo,
ich bin gerade dabei ein Skript zu schreiben um Personaldaten aus einer Datenbank in einer vCard zu sichern. Hier will ich auch das Bild sichern. Die Daten habe ich bereits binär in einer Variable.

Leider habe ich keine Ahnung was das für ein Format ist und wie ich es erzeugen kann.

Auszug aus einer vCard mit Bild:


PHOTO;ENCODING=b;TYPE=image/jpeg:/9j/4AAQSkZJRgABAQIAAAAAAAD/2wBDAAEBAQEBAQ
EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBA
QH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ EBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQH/wAARCACMAHADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAE
CAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJ xFDKBkaEII0
KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdI SUpTVFVWV1hZWmNkZWZnaGlqc
3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW 2t7i5usLDxMXGx8jJytLT1NXW
19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQo
L/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRM iMoEIFEKRobHBCSMzUvAVYn
LRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldY WVpjZGVmZ2hpanN0dXZ3eHl6g
oOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsP ExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/FRkgf56UrKFxjPOetS5HqPzFIXAxjB/GgT
aSu3oRDkgepFP2LnGTz0HHbr256iq810YwSiCQqrsygy7wVDYH lxwTSOrMAoZEYnkorEKrfOHxR
/a4+AHwiu5rTxx8RNFsNQsLW4urnTbBr/WtQQpBDNFCItHsb20gkuA4WMare6WpIJUuqzmELUZP
ZPVdF0v/Xy8j6U4JIXnacYOQegJwDjI56gEZyAc5piujuUR1Z1BJUEbgMg ZI6ryR1xX4hfFL/gs
78P9EN7a+APh9ca3EZisOv674ms7CylRJRGJn0nSrS/uW8yJFCouqxSRMQsyh0eMeN+Ff+C+HhO
K9g07x58IbezjnuLeFb/RvF2roIlluYo5na31XwfM0xtreSW4aL7eJZfIKRhQflDT6vWtz cjtZP
ps+W35/nfY/onCZHOQfbH/ANf/AD2qOvkP4Bft0/s1/tFG3sfh/wDEPTpfEMtpb3k/hnVLfUtI1
e0M8bsIWOpWFpYXLfupPLFne3EsiBXeGISRhvsASBiduCowC+c DJVXAGRhgVdSGUlfvAkMuCGUk
02mrPquxHX4z/wDBWP8AbS8BfAD4dap8LrH4n/Er4efHDxYfDniLwlc/D+GH91pclxrmk3Z8SXf
nW11Bol7p+javbxWOnSDV5dcHhjVrRzYxal5X7D6vrOn6NEk+o XlpZwN8plup2iQbpre3TlY5Tt
M9zAkkhCpEr75GCg1/HJ/wWD+KE3xj+OniD4h+EPC1rYfDb4P3y/BTWvi5HoHjSbwl4l+KOj+IN
RmufBeq6p4rt9C8BeJ7/S9BttY1jSG0XSdUiW0aRNG1zxVcSx6czjFz5kknZa3aW7v1fTT W/pbY
R+QX7QHw01TxN8O9Y+MOqeK/Efi/xXD/AMJn4i1vR/Demjxh4ksPBsPh/wAO+LtS+Jvj7V/CDXM
ejz6dfeJ9RuPH+mavfapb/DbxIND8NajqegS3djHrHw342+FHh7RPD+l6/wCHYfDlpoGvz6j4w0
Sx1jxn4d1zxfomhweJ9d8NaHoXimx8OvJ4q0i2bTZNWvrSw8UW OnajrHhO88O+IdOuLyw1mynuv
pHxPe+EH8J+JNS02Sa01HXk07SLvTD/AMJn4e1PWdJMgmn129k1fxfq/iHStTikN3dLpltL450O
8h1tvP1XT9ctdYEnxv4su4tL1HUNVjuLp/DOparqV74ltmeCazj1S+ka9MUiZkkKW89zAqpYpBa
MyB4bOwjJsrfx8zzOmqawlGFnycre+6jo3fzT111toBy3iN9BE V1ZnV79L2Typ74f6PbW5iECxe
TZwkSTFVWQArMFZmXcpKgGvEdR8ReGtN1T7PYx6wnlPJD9tuLO KK0kaMAo63JcNKGZmBZIyigqz
FQ2R1Osa7NNHf3F1GLRGULBIpt7xiCAgfy0RZdpyc7mAHGOQDX zprniuKZ57K4MRMdxNHaeXG0a
ghwkkTApl5JFRGErMqjeI1BaNifMy/D1Y01Jx3d3qtNVfr93cD/bBMYIOCQfr/8AWrG1zV9P8Oa
Vfazq91Faadp1tJeXlzNLHGsUMIBOHmaKMNIzLGu91DMwQEMwr VJJB5xnGTgdq/Pr/gpv41vPBn ...


Es wäre schön, wenn jemand einen Tipp hat wie ich das hinbekommen kann.

Danke,
sallo

jeebee
05-07-2007, 21:59
vcard:PHOTO

A photo resource may either have a vcard:uri property whose value is the network location of the graphic, or a vcard:binary property whose value is the base64 encoded image data. Note that the actual base64 data is not passed through to XSL transformations for the sake of efficiency, but testing for the presence of 'rdf:RDF/fs:File/vcard:VCARD/vcard:PHOTO/vcard:binary' will properly reflect whether there is binary image data in the source file. Also note that the common vcard property vcard:type has the corresponding mime image subtype as a value (HyperContent uses jpeg by default).

Also ists einfach wie ich eh schon vermutet habe ein JPEG base64-encodiert. Auf php.net (http://ch2.php.net/manual/de/function.base64-decode.php#38479) hab ich dies gefunden:
<?php
function base64_to_jpeg( $inputfile, $outputfile ) {
/* read data (binary) */
$ifp = fopen( $inputfile, "rb" );
$imageData = fread( $ifp, filesize( $inputfile ) );
fclose( $ifp );
/* encode & write data (binary) */
$ifp = fopen( $outputfile, "wb" );
fwrite( $ifp, base64_decode( $imageData ) );
fclose( $ifp );
/* return output filename */
return( $outputfile );
}
?>
Das musst du halt noch so umbauen, dass als Input direkt der base_64-encodierte String und nicht ein Dateiname genommen wird.

MfG jeebee

sallo
05-07-2007, 22:08
Danke, der Tipp war der richtige. Mit base64_encode() muss ich die Daten kodieren, damit sie richtig in der Datei stehen :-)