PHP - 使用URL读取图像

时间:2017-02-14 18:57:20

标签: php image

在这里我的问题,我对MySQL(PDO)进行查询,为我提供包含ID和URL的表nammed头像的最后5个URL:

$response = $dbh->query("SELECT url FROM avatar ORDER BY id_URL DESC LIMIT 0,5 ");

我做了:

  while ($donnees = $response->fetch())
{

$urlImage = $donnees['url']; //'url' contains the URL
$result = file_get_contents($urlImage);        
header('Content-Type: image/png');
echo $result;   
?>

但是标题只是返回一个小空白方块。但是," $ result = file_get_contents($ urlImage);"正确使用URL,因为当我这样做时:

   $urlImage = $donnees['url']; //'url' contains the URL
$result = file_get_contents($urlImage);        
echo $result;   
?>

它只是显示图像的"编码" (大量特殊字符)但不显示图像。

我也尝试用#34; imagick"但它告诉我,课程不存在,我不认为imagecreatefrompng可以用于URL。

谢谢!

2 个答案:

答案 0 :(得分:3)

你可以尝试一下,看看它是否有效吗?

 $image = file_get_contents($donnees['url']);
 $finfo = new finfo(FILEINFO_MIME_TYPE);
 header('content-type: ' . $finfo->buffer($image));
 echo $image;

这假设处理一个图像。一个PHP脚本可以返回一个图像。如果你想组合图像并渲染一个很长的图像,那么你应该看看http://image.intervention.io/

修改

我在尝试上面的代码后理解的是,如果你将file_get_contents放在header之前,那么就会显示原始字符。但是你把它放在标题之后然后一切似乎都在工作

$image="http://www.hillspet.com/HillsPetUS/v1/portal/en/us/cat-care/images/HP_PCC_md_0130_cat53.jpg";
$filename = basename($image);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
    case "gif": $ctype="image/gif"; break;
    case "png": $ctype="image/png"; break;
    case "jpeg":
    case "jpg": $ctype="image/jpeg"; break;
    default:
}

header('Content-type: ' . $ctype);
$image = file_get_contents($image);
echo $image;

工作fiddle

答案 1 :(得分:1)

如果您尝试使用动态图片来源,其中您的网址是图片来源,并且它不起作用,则问题可能是某个位置上有空格或额外字符页面,这将使浏览器在某些情况下将其视为文档而不是图像。

您的问题是浏览器并不了解它应该是一张图片。

你总是可以这样做:

<img src="<?=$urlImage?>">