2010-11-26 22 views

Antwort

27

Muss ich die Header ändern und nur Echo oder etwas?

genau.

Senden Sie eine header("content-type: image/your_image_type"); und die Daten danach.

+0

in Ordnung, und Header ("Content-Type: image/jpg"); sollte ausreichen? –

+0

@Belgin, wenn es ein JPG-Bild ist, ja. –

+3

muss es nicht image/jpeg? – Rahly

9

Sie können das tun, oder Sie können die readfile Funktion verwenden, die es für Sie gibt:

header('Content-Type: image/x-png'); //or whatever 
readfile('thefile.png'); 
die(); 

Edit: Derp, fest offensichtlich eklatante Tippfehler.

55

können Sie verwenden readfile und Ausgabe der Bildüberschriften, die Sie von getimagesize wie diese bekommen:

$remoteImage = "http://www.example.com/gifs/logo.gif"; 
$imginfo = getimagesize($remoteImage); 
header("Content-type: {$imginfo['mime']}"); 
readfile($remoteImage); 

Der Grund, warum Sie ReadFile- hier verwenden sollten, ist, dass es die Datei direkt an den Ausgabepuffer gibt, wo als file_get_contents liest die Datei in den Speicher, der in diesem Inhalt nicht benötigt wird und möglicherweise für große Dateien intensiv ist.

+6

Diese Lösung ist viel besser, da die Bildüberschriften dynamisch übergeben werden. Obwohl ich ein Problem damit gefunden habe: In meiner Version von PHP wurde die dritte Zeile (die Kopfzeile) nicht als Syntax akzeptiert. Dies funktionierte jedoch: header ("Inhaltstyp:". $ Imginfo ['Mime']); – jsleuth

7

Sie können wie folgt tun:

<?php 
    $file = 'your_images.jpg'; 

    header('Content-Type: image/jpeg'); 
    header('Content-Length: ' . filesize($file)); 
    echo file_get_contents($file); 
?> 
26
$image = 'http://images.itracki.com/2011/06/favicon.png'; 
// Read image path, convert to base64 encoding 
$imageData = base64_encode(file_get_contents($image)); 

// Format the image SRC: data:{mime};base64,{data}; 
$src = 'data: '.mime_content_type($image).';base64,'.$imageData; 

// Echo out a sample image 
echo '<img src="' . $src . '">'; 
+0

Dies sollte die akzeptierte Antwort sein – Kareem

+0

Das funktioniert auch für mich. +1 – valkirilov

+0

Es funktioniert, ist aber ein bisschen langsam auf 10 MB Bilder. –

0

Kleine bearbeiten Antwort auf @seengee: Um zu arbeiten, müssen Sie geschweifte Klammern um die Variable, sonst erhalten Sie eine Fehlermeldung erhalten.

header("Content-type: {$imginfo['mime']}");