webentwicklung-frage-antwort-db.com.de

Bild mit file_get_contents anzeigen

wie kann ich ein Bild anzeigen, das mit file_get_contents in PHP abgerufen wurde?

Muss ich die Überschriften ändern und sie einfach wiedergeben oder so?

Vielen Dank!

40
Belgin Fish

Muss ich die Überschriften ändern und sie einfach wiedergeben oder so?

genau.

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

30
Pekka 웃

Sie können readfile verwenden und die Bildüberschriften, die Sie von getimagesize erhalten können, folgendermaßen ausgeben:

$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 in den Ausgabepuffer ausgibt, wo file_get_contents die Datei in den Speicher einliest, was in diesem Inhalt unnötig ist und möglicherweise für große Dateien sehr intensiv ist.

66
robjmills
$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 . '">';
47
Yaşar Xavan

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

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

Edit: Derp, offensichtliche grelle Tippfehler behoben.

9
Mike Caron

das kannst du so machen:

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

    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file));
    echo file_get_contents($file);
?>
8

Kleine Änderung an @seengee Antwort: Um zu arbeiten, benötigen Sie geschweifte Klammern um die Variable, andernfalls wird eine Fehlermeldung angezeigt.

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

0
darighteous1