2010-12-03 4 views

Répondre

23

Voulez-vous créer une URL de données? Vous avez besoin d'un type MIME et d'autres informations supplémentaires (voir Wikipedia). Si ce n'est pas le cas, ce serait une représentation simple base64 de l'image:

$b64image = base64_encode(file_get_contents('path/to/image.png')); 

docs pertinents: base64_encode()-function, file_get_contents()-function.

8

Essayez ceci: -

Exemple un: -

<?php 
function base64_encode_image ($filename=string,$filetype=string) { 
    if ($filename) { 
     $imgbinary = fread(fopen($filename, "r"), filesize($filename)); 
     return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary); 
    } 
} 
?> 

used as so 

<style type="text/css"> 
.logo { 
    background: url("<?php echo base64_encode_image ('img/logo.png','png'); ?>") no-repeat right 5px; 
} 
</style> 

or 

<img src="<?php echo base64_encode_image ('img/logo.png','png'); ?>"/> 

Exemple Deux: -

$path= 'myfolder/myimage.png'; 
$type = pathinfo($path, PATHINFO_EXTENSION); 
$data = file_get_contents($path); 
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data); 
+0

Votre exemple deux est exactement ce que je cherchais. +1 pour ça. –

4

Je suis arrivé à cette question la recherche d'une solution similaire, en fait, je compris que c'était la question originale.

Je voulais faire la même chose, mais le fichier est dans un serveur distant, donc ce que je l'ai fait:

$url = 'http://yoursite.com/image.jpg'; 
$image = file_get_contents($url); 
if ($image !== false){ 
    return 'data:image/jpg;base64,'.base64_encode($image); 

} 

Ainsi, ce code est d'une fonction qui renvoie une chaîne, et vous pouvez afficher la valeur de retour dans le paramètre src d'une balise img en html. J'utilise smarty comme ma bibliothèque de templates. Il pourrait se présenter comme suit:

<img src="<string_returned_by_function>"> 

Notez l'appel explicite à:

if ($image !== false) 

Cela est nécessaire parce que file_get_contents peut retourner 0 et transtypée false dans certains cas, même si le fichier chercher a réussi . En fait, dans ce cas, cela ne devrait pas arriver, mais c'est une bonne pratique pour récupérer le contenu d'un fichier.