为啥我不能对这个图像使用 getimagesize PHP? [复制]

Posted

技术标签:

【中文标题】为啥我不能对这个图像使用 getimagesize PHP? [复制]【英文标题】: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?

【问题讨论】:

因为:用户代理阻塞??您是如何调试第二个可用于远程访问的资源的? 这个对我有用:***.com/a/11680906/1403118 【参考方案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] =>  
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

所以并不是getimagesize 不适用于所有图像。它无法下载图像本身。

【讨论】:

如何从阻止 PHP 用户代理的站点下载图像? 您可以在提出任何请求之前使用ini_set。见this answer。

以上是关于为啥我不能对这个图像使用 getimagesize PHP? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 getimagesize() 与 $_FILES[''] 一起使用?

照片上传 getimagesize() 警告 - 文件名不能为空

PHP 获取图像信息 getimagesize 函数

PHP 获取图像信息 getimagesize 函数

php - 获取图像信息 getimagesize 函数

直方图均衡化对有些图片不能达到好的效果, 为啥?