Показать изображение с помощью file_get_contents

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

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

Спасибо!


person Belgin Fish    schedule 26.11.2010    source источник


Ответы (6)


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

точно.

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

person Pekka    schedule 26.11.2010
comment
хорошо, и заголовок (Content-Type: image/jpg); должно быть достаточно? - person Belgin Fish; 26.11.2010
comment
@Belgin, если это изображение в формате JPG, да. - person Pekka; 26.11.2010
comment
не нужно изображение/jpeg? - person Rahly; 26.11.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 будет считывать файл в память, что не нужно для этого содержимого и потенциально интенсивно для больших файлов.

person robjmills    schedule 26.11.2010
comment
Это решение намного лучше, поскольку заголовки изображений передаются динамически. Хотя я обнаружил одну проблему: в моей версии PHP третья строка (строка заголовка) не имела синтаксиса. Это сработало: header(Content-type: .$imginfo['mime']); - person jsleuth; 05.06.2013
comment
Для тех, кто получает ошибку, изображение не может отображаться или просто пустой экран. Просто начните свой документ с ‹?php, за которым следует код для отображения изображения без какого-либо html-кода. - person Fellipe Sanches; 11.09.2020

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

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

Редактировать: Derp, исправлена ​​очевидная опечатка.

person Mike Caron    schedule 26.11.2010

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

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

    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file));
    echo file_get_contents($file);
?>
person Mochammad Taufiq    schedule 11.10.2012

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

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

person darighteous1    schedule 22.11.2016

person    schedule
comment
Я использовал это, чтобы статические карты Google работали в Safari и Chrome, работает отлично. - person H2ONOCK; 17.10.2018