PHP 的 getimagesize 未检测到来自 URL 的图像

PHP's getimagesize not detecting image from URL

我正在使用以下代码快速验证 link 是否是图像...

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

它几乎适用于所有情况(即,如果浏览器 return 是图像,那么 getimagesize 将 return 某些东西),但我发现在某些情况下它不起作用 -例如为此 link...

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

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

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

非常感谢任何人对为什么 getimagesize 在第一个示例中没有 return 图像但在第二个示例中有任何想法 - 以及关于如何调整代码以说明的任何建议路透社的例子也很棒!!

照原样使用

<?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 ) 
?>

使用它

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

确保:

  1. 你在那里指定了正确的图片路径
  2. 图像具有读取权限
  3. 将图像目录更改为 755

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

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