Envoi / Affichage d'une image codée en base64

J'ai besoin d'envoyer un base64 chaîne codée à un client. Je suis donc à l'ouverture et à la lecture d'un fichier image sur le serveur, encoder et envoyer des données avec la image/jpeg de type de contenu pour le navigateur.
Exemple en php:

$image      = $imagedir . 'example.jpg';
$image_file = fopen($image, 'r');
$image_data = fread($image_file, filesize($image));

header("Content-type: image/jpeg");
echo 'data:image/jpeg;base64,' . base64_encode($image_data);

Infoclientje vais appeler:

var img     = new Image();
img.src     = "http://www.myserver.com/generate.php";
img.onerror = function(){alert('error');}
$(img).appendTo(document.body);

Qui ne fonctionne pas pour une raison quelconque. onerror se déclenche toujours. Regarder le FireBug Network task par exemple, me dit que je vais recevoir la bonne information d'en-tête et d'une juste valeur d'octets transférés.

Si j'envoie les données que Content-type: text/plain il fonctionne, le base64 chaîne est affichée dans le navigateur (si j'appelle le script directement). Copier et coller cette sortie dans le src d'un <img> élément montre l'image comme prévu.

Ce que je fais mal?

Solution

Grâce Pekka pour me pointer sur mon erreur. Vous n'avez pas besoin (vous ne pouvez pas!) encoder que les binaires de données d'image en base64 corde dans ce type d'approche. Sans l'encodage base64, il fonctionne, tout simplement.

source d'informationauteur jAndy