【问题标题】:PHP's getimagesize not detecting image from URLPHP的getimagesize没有从URL检测图像
【发布时间】:2016-07-19 21:58:23
【问题描述】:

我正在使用下面的代码来快速验证一个链接是否是图片...

if (getimagesize($imageLink)) {
} else {
    echo "notImage";
    exit();
}

它几乎适用于所有情况(即,如果浏览器返回图像,则 getimagesize 将返回某些内容),但我发现在某些情况下它不起作用 - 例如对于这个链接...

http://s4.reutersmedia.net/resources/r/?m=02&d=20160330&t=2&i=1128905435&w=&fh=545px&fw=&ll=&pl=&sq=&r=LYNXNPEC2T0YW

这通常适用于路透社网站,我相信还有其他一些网站,但我真的很难理解为什么会出现这个问题,因为浏览器设法返回图像。我最初认为 getimagesize 需要明确说明文件的路径(例如以 .jpg、.png 等结尾),但类似这样的链接又可以正常工作...

https://d2sh4fq2xsdeg9.cloudfront.net/contentAsset/image/f9b79b5e-1986-4376-b9ed-0b153d6deb14/image/byInode/1/filter/Resize,Jpeg/jpeg_q/69/resize_w/434

非常感谢任何有任何想法的人的任何想法,为什么 getimagesize 在第一个示例中不返回图像,但在第二个示例中返回 - 关于如何调整代码以解释路透社示例的任何建议也很棒!!

【问题讨论】:

  • 感谢 Vedant 的链接。通读它,我认为您建议我在运行 getimagesize 之前先在本地下载图像?但出于安全原因,我希望在我知道这是一张图片之前不要下载任何东西——这有意义吗?如果我没有正确理解这一点,请告诉我

标签: php getimagesize


【解决方案1】:

使用它

 list($width, $height) = getimagesize('path_to_image');

确保:

  1. 您在此处指定正确的图像路径
  2. 图像具有读取权限
  3. 将图像目录更改为 755

还可以尝试在路径前加上 $_SERVER["DOCUMENT_ROOT"],这有时会在您无法读取文件时有所帮助。

参考:Get Image Height and Width as integer values?

【讨论】:

    【解决方案2】:

    照样使用

    <?php 
    list($width, $height) = getimagesize("http://s4.reutersmedia.net/resources/r/?m=02&d=20160330&t=2&i=1128905435&w=&fh=545px&fw=&ll=&pl=&sq=&r=LYNXNPEC2T0YW"); 
    $arr = array('h' => $height, 'w' => $width );
    print_r($arr); //output - Array ( [h] => 545 [w] => 968 ) 
    ?>
    

    【讨论】:

    • 但这不会为路透社链接返回任何内容?
    • 抱歉,这确实工作得很好 - 非常感谢 - 我不知道为什么,但是对于这个 URL,我传递给我的 PHP 的值在 ?m=02 之后被修剪了。嗯嗯
    猜你喜欢
    • 2011-05-18
    • 2014-09-11
    • 2012-10-17
    • 2021-01-02
    • 2011-01-09
    • 2022-01-08
    • 2012-09-27
    • 2014-10-10
    • 1970-01-01
    相关资源
    最近更新 更多