2017-10-01 174 views
0

为什么我不能在这张图片中使用getimagesize PHP?为什么我不能在这张图片中使用getimagesize PHP?

对于这个图片我可以getimagesize PHP,工作很好。

<?PHP 
     $source = "https://i.pinimg.com/736x/da/7a/19/da7a19a0c3daabe579ecca21d1ae32c3--felt-wool-felting-projects.jpg"; 
     $dimension = getimagesize($source); 
     $width = $dimension[0]; 
     $height = $dimension[1]; 

     echo $width; 
     echo "<BR>"; 
     echo $height; 
?> 

但是对于这个图片为什么我不能得到getimagesize PHP?

<?PHP 
     $source = "https://shorebread.com/wp-content/uploads/2016/07/kitty-cat-reaching_138482216-2000x500.jpg"; 
     $dimension = getimagesize($source); 
     $width = $dimension[0]; 
     $height = $dimension[1]; 

     echo $width; 
     echo "<BR>"; 
     echo $height; 
?> 

我该如何在每张图片上使用getimagesize PHP?

+0

因为:用户代理阻塞??你是如何调试第二个资源以供远程访问的? – mario

回答

1

可能是因为网站不允许“hot-linking”,或者它阻止了PHP的用户代理。

如果试图从URL获取数据,你会得到一个HTTP/1.1 403禁止响应:

php > $dimension = getimagesize($source); 
PHP Warning: getimagesize(https://shorebread.com/wp-content/uploads/2016/07/kitty-cat-reaching_138482216-2000x500.jpg):   
failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden 

in php shell code on line 1 

如果你从磁盘首先下载图像,并做同样的工作原理:

php > $dimension = getimagesize("kitty-cat-reaching_138482216-2000x500.jpg"); 
php > print_r($dimension); 
Array 
(
    [0] => 2000 
    [1] => 500 
    [2] => 2 
    [3] => width="2000" height="500" 
    [bits] => 8 
    [channels] => 3 
    [mime] => image/jpeg 
) 

因此,并非getimagesize不适用于所有图像。它无法下载图像本身。

+0

如何从阻止PHP用户代理的网站下载图像? –

+0

在发出任何请求之前,您可以使用'ini_set'。看[这个答案](https://stackoverflow.com/questions/8974742/change-user-agent-using-php)。 –

相关问题