2012-09-27 27 views
1

这里有一个JPG:http://i.stack.imgur.com/PIFN0.jpg如何使用php呈现远程图像?

stackoverflow logo jpg

比方说,我想从/img.php?file_name=PIFN0.jpg

此呈现以下是我正在努力使这项工作:

/sample.php

<p>Here's my image:</p> 
<img src="/img.php?file_name=PIFN0.jpg"> 

/img.php

<?php 
    $url = 'http://i.stack.imgur.com/' . $_GET['file_name']; 
    header('Content-type: image/jpeg'); 
    imagejpeg($url); 
?> 

我希望/sample.php显示图像。但这不起作用。我得到的只是一张破碎的图像。我究竟做错了什么?

回答

6

使用imagecreatefromjpeg

<?php 
    $url = 'http://i.stack.imgur.com/' . $_GET['file_name']; 
    header('Content-type: image/jpeg'); 
    imagejpeg(imagecreatefromjpeg($url)); 
?> 

参考http://php.net/manual/en/function.imagecreatefromjpeg.php

+0

呵呵 - 我没有意识到imagecreatefromjpeg()和它的支持fopen()包装。 –

+0

是的:)很酷的东西 - 我想有人必须最终设置它 –

+1

到OP:当然,这并不能保证图像驻留的服务器将实际上允许你通过PHP下载并重新服务它。 –

0
<?php 
header("Content-Type: image/jpeg"); 
$url = "http://i.stack.imgur.com/PIFN0.jpg"; 
$imgContents = file_get_contents($url); 
$image = @imagecreatefromstring($imgContents); 
imagejpeg($image); 
?> 
3

下面是一个工作示例:

<?php 
function img_create($filename, $mime_type) 
{ 
    $content = file_get_contents($filename); 
    $base64 = base64_encode($content); 
    return ('data:' . $mime_type . ';base64,' . $base64); 
} 
?> 

<img src="<?php print img_create('http://tuxpaint.org/stamps/stamps/animals/birds/cartoon/tux.png','image/png'); ?>" alt="random logo" /> 
3

无需使用GD功能:

<?php 
    $url = 'http://i.stack.imgur.com/' . $_GET['file_name']; 
    header('Content-type: image/jpeg'); 
    readfile($url); 
?> 
-1
header('Content-type: image/jpeg'); 
readfile($_GET['id']); 

但在新的服务器,只可以读取本地图片,远程图像是错误。