在这里我的问题,我对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。
谢谢!
答案 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?>">