bild als base64 in block ausgeben

Amun

Grünschnabel
Guten Abend,

ich bin gerade dabei Personendaten aus einer Datenbank auszulesen und Nokia kompatible VCards zu erstellen.

Das klappt auch soweit recht gut, nur bei dem Benutzerbild, welches als base64 string in der Datei enthalten ist, komme ich nicht weiter.

Ich kann zwar den Inhalt des Bildes als Base64 umwandeln, allerdings habe ich nach ein paar Tests herausgefunden, dass in den Nokia Dateien der Base64 String jeweils in einem Block mit 64 Zeichen pro Spalte steht.

Ich habe nun schon ein wenig gesucht und meine mit folgendem Ansatz etwas gefunden zu haben:
PHP:
<?php
function return_base64_picture($picture){
	global $sys_conf; 	
	$fp = fopen($sys_conf['picture_path']."/".$picture, "rb");
	$param = array('line-length' => 64, 'line-break-chars' => "\r\n    ");
	stream_filter_append($fp, 'convert.base64-encode', STREAM_FILTER_WRITE, $param);
	fclose($fp);
	return $out;
}
?>

Mein Problem ist nun, dass ich den Inhalt aus dem Stream gerne in einen String packen möchte und als $out zurückgeben will. Als einzige Möglichkeit fiel mir ein, die Speicherung des Streams in eine Datei und danach einfach den Inhalt der Datei zurück zu geben.
Aber das erscheint mir zu umständlich.

Vielen Danke an jeden der schaut, denkt und vielleicht hilft ;)
 
so ich habe mich dann selber noch mal hingesetzt und was zusammengeschrieben:
Über obige Stream Funktion geht es sicherlich noch einfacher, aber naja folgendes geht soweit auch:

PHP:
function return_base64_picture($picture){
	global $picture_path; 	

	$fcontent = file_get_contents($picture_path."/".$picture, "rb");
	$fcontent = base64_encode($fcontent);
	while(strlen($fcontent)> 0){
		$out .= "    ".substr( $fcontent, 0, 64 )."
";
		$fcontent = substr($fcontent,64);
	} 
	return $out;
}

vielleicht hilft es ja wem ....
 
Zurück