【问题标题】:Why i can not use getimagesize PHP with this image? [duplicate]为什么我不能对这个图像使用 getimagesize PHP? [复制]
【发布时间】:2018-03-12 13:29:18
【问题描述】:

为什么我不能对这个图像使用 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?

【问题讨论】:

标签: php getimagesize


【解决方案1】:

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

如果您尝试从 URL 获取数据,您将收到 HTTP/1.1 403 Forbidden 响应:

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 不适用于所有图像。它无法下载图像本身。

【讨论】:

  • 如何从阻止 PHP 用户代理的站点下载图像?
  • 您可以在提出任何请求之前使用ini_set。见this answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 2016-12-29
  • 1970-01-01
  • 2017-01-12
  • 2021-04-21
  • 1970-01-01
  • 2013-07-16
相关资源
最近更新 更多