как я могу отобразить изображение, полученное с помощью file_get_contents в php?
Нужно ли изменять заголовки и просто отображать их или что-то в этом роде?
Спасибо!
Вы можете использовать readfile и выводить заголовки изображений, которые вы можете получить из getimagesize следующим образом:
$remoteImage = "http://www.example.com/gifs/logo.gif"; $imginfo = getimagesize($remoteImage); header("Content-type: {$imginfo['mime']}"); readfile($remoteImage);
Причина, по которой вы должны использовать readfile, заключается в том, что он выводит файл непосредственно в буфер вывода, где file_get_contents будет считывать файл в память, которая не нужна в этом контенте и потенциально интенсивна для больших файлов.
$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 . '">';
Нужно ли мне изменять заголовки и просто отображать их или что-то еще?
точно.
Отправить header("content-type: image/your_image_type"); и данные впоследствии.
header("content-type: image/your_image_type");
Вы можете сделать это, или вы можете использовать функцию readfile, которая выводит ее для вас:
readfile
header('Content-Type: image/x-png'); //or whatever readfile('thefile.png'); die();
Редактировать: Сумасшедший, исправлена очевидная опечатка.
вы можете сделать так:
<?php $file = 'your_images.jpg'; header('Content-Type: image/jpeg'); header('Content-Length: ' . filesize($file)); echo file_get_contents($file); ?>
Небольшое изменение ответа @seengee: чтобы работать, вам понадобятся фигурные скобки вокруг переменной, в противном случае вы получите ошибку.
header("Content-type: {$imginfo['mime']}");