PHP的getimagesize无法检测来自网址

时间:2016-03-31 12:29:16

标签: php getimagesize

我正在使用以下代码快速验证链接是否为图片...

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在第一个例子中没有返回图像但在第二个例子中也是如此 - 并且关于如何调整代码来解释路透社示例的任何建议也会很棒!

2 个答案:

答案 0 :(得分:4)

使用它

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

答案 1 :(得分:2)

使用

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

请确保:

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

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

ref:Get Image Height and Width as integer values?