Wie kann ich ein Bild anzeigen, das mit file_get_contents in PHP abgerufen wird?Bild anzeigen mit file_get_contents
Muss ich die Header ändern und nur Echo oder etwas?
Danke!
Wie kann ich ein Bild anzeigen, das mit file_get_contents in PHP abgerufen wird?Bild anzeigen mit file_get_contents
Muss ich die Header ändern und nur Echo oder etwas?
Danke!
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.
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.
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.
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
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);
?>
$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 . '">';
Dies sollte die akzeptierte Antwort sein – Kareem
Das funktioniert auch für mich. +1 – valkirilov
Es funktioniert, ist aber ein bisschen langsam auf 10 MB Bilder. –
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']}");
in Ordnung, und Header ("Content-Type: image/jpg"); sollte ausreichen? –
@Belgin, wenn es ein JPG-Bild ist, ja. –
muss es nicht image/jpeg? – Rahly