2010-12-03 14 views

Antwort

23

Möchten Sie eine Daten-URL erstellen? Sie benötigen dann einen MIME-Type und einige weitere Zusatzinformationen (siehe Wikipedia). Ist dies nicht der Fall ist, würde dies eine einfache base64 Darstellung des Bildes sein:

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

Relevante Dokumente: base64_encode()-function, file_get_contents()-function.

8

Versuchen Sie folgendes: -

Beispiel Eins: -

<?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'); ?>"/> 

Beispiel zwei: -

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

Ihr Beispiel zwei ist genau das, was ich gesucht habe. +1 dafür. –

4

ich auf diese Frage bekam für eine ähnliche Lösung sucht, tatsächlich, ich verstanden, dass dies die ursprüngliche Frage war.

Ich wollte die gleiche, aber die Datei war in einem Remote-Server tun, so ist dies, was ich tat:

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

} 

dieser Code also aus einer Funktion, die einen String zurückgibt, und Sie können geben Sie den Rückgabewert innerhalb des src-Parameters eines img-Tags in html aus. Ich benutze Smarty als meine Vorlagenbibliothek. Es könnte so gehen:

<img src="<string_returned_by_function>"> 

Hinweis den expliziten Aufruf:

if ($image !== false) 

Dies ist notwendig, weil file_get_contents kann 0 zurückgeben, und in einigen Fällen falsch gegossen werden, auch wenn die Datei holen war erfolgreich . Eigentlich sollte es in diesem Fall nicht passieren, aber es ist eine gute Übung beim Abrufen von Dateiinhalten.

Verwandte Themen