如何使用php呈现远程图像?

如何使用php呈现远程图像?,php,image,header,http-headers,Php,Image,Header,Http Headers,这里有一个jpg:http://i.stack.imgur.com/PIFN0.jpg 假设我希望从/img.php?file_name=PIFN0.jpg 以下是我如何努力让这一切顺利进行的: /sample.php <p>Here's my image:</p> <img src="/img.php?file_name=PIFN0.jpg"> <?php $url = 'http://i.stack.imgur.com/' . $_GET

这里有一个jpg:
http://i.stack.imgur.com/PIFN0.jpg

假设我希望从
/img.php?file_name=PIFN0.jpg

以下是我如何努力让这一切顺利进行的:

/sample.php

<p>Here's my image:</p>
<img src="/img.php?file_name=PIFN0.jpg">
<?php
    $url = 'http://i.stack.imgur.com/' . $_GET['file_name'];
    header('Content-type: image/jpeg');
    imagejpeg($url);
?>
这是我的图片:

/img.php

<p>Here's my image:</p>
<img src="/img.php?file_name=PIFN0.jpg">
<?php
    $url = 'http://i.stack.imgur.com/' . $_GET['file_name'];
    header('Content-type: image/jpeg');
    imagejpeg($url);
?>


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

使用
imagecreatefromjpeg

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

参考


以下是一个工作示例:

<?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" />

“alt=”随机徽标“/>

无需使用GD功能:

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


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

Huh-我没有意识到imagecreatefromjpeg()及其同类支持fopen()wrappers.Yep:)很酷的东西-我想最终有人不得不将它设置到OP:当然,这并不保证图像所在的服务器会允许您通过PHP下载并重新提供它。如果您混合了jpg ng和GIF呢?