Показать изображение с помощью file_get_contents - PullRequest
40 голосов
/ 26 ноября 2010

как я могу отобразить изображение, полученное с помощью file_get_contents в php?

Нужно ли изменять заголовки и просто отображать их или что-то в этом роде?

Спасибо!

Ответы [ 6 ]

65 голосов
/ 26 ноября 2010

Вы можете использовать readfile и выводить заголовки изображений, которые вы можете получить из getimagesize следующим образом:

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

Причина, по которой вы должны использовать readfile, заключается в том, что он выводит файл непосредственно в буфер вывода, где file_get_contents будет считывать файл в память, которая не нужна в этом контенте и потенциально интенсивна для больших файлов.

47 голосов
/ 06 февраля 2014
$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 . '">';
30 голосов
/ 26 ноября 2010

Нужно ли мне изменять заголовки и просто отображать их или что-то еще?

точно.

Отправить header("content-type: image/your_image_type"); и данные впоследствии.

9 голосов
/ 26 ноября 2010

Вы можете сделать это, или вы можете использовать функцию readfile, которая выводит ее для вас:

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

Редактировать: Сумасшедший, исправлена ​​очевидная опечатка.

8 голосов
/ 11 октября 2012

вы можете сделать так:

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

    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file));
    echo file_get_contents($file);
?>
0 голосов
/ 22 ноября 2016

Небольшое изменение ответа @seengee: чтобы работать, вам понадобятся фигурные скобки вокруг переменной, в противном случае вы получите ошибку.

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

...