使用file_get_contents显示图像

时间:2010-11-26 15:48:56

标签: php http-headers file-get-contents

如何在php中显示使用file_get_contents检索的图像?

我是否需要修改标题并回复它或什么?

谢谢!

6 个答案:

答案 0 :(得分:64)

您可以使用readfile并输出您可以从getimagesize获取的图片标题,如下所示:

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

你应该在这里使用readfile的原因是它将文件直接输出到输出缓冲区,其中file_get_contents将文件读入内存,这在此内容中是不必要的,对于大文件可能是密集的。

答案 1 :(得分:47)

$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 . '">';

答案 2 :(得分:30)

  

我是否需要修改标题并回复它或什么?

准确。

之后发送header("content-type: image/your_image_type");和数据。

答案 3 :(得分:9)

您可以这样做,或者您可以使用readfile功能为您输出:

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

编辑:Derp,修正了明显的错误拼写错误。

答案 4 :(得分:8)

你可以这样做:

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

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

答案 5 :(得分:0)

小编辑@seengee回答: 为了工作,您需要在变量周围使用花括号,否则您将收到错误。

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