PHP getimagesize не обнаруживает изображение по URL-адресу

Я использую следующий код, чтобы быстро проверить, является ли ссылка изображением или нет ...

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

Это обычно относится к веб-сайту Reuters и, я уверен, к некоторым другим, но я действительно изо всех сил пытаюсь понять, почему существует эта проблема, поскольку браузеру удается вернуть изображение. Первоначально я думал, что 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/69/resize_w/ а>

Был бы очень признателен за любые мысли от любого, у кого есть идеи, почему getimagesize не возвращает изображение в первом примере, но делает во втором - и любые предложения о том, как адаптировать код для учета примера reuters, также были бы фантастическими !!


person d3wannabe    schedule 31.03.2016    source источник
comment
Возможный дубликат: stackoverflow.com/questions/10035954/   -  person Vedant Terkar    schedule 31.03.2016
comment
спасибо за ссылку ведант. Читая его, я думаю, вы предлагаете сначала загрузить изображение локально, прежде чем запускать getimagesize? Но я надеялся ничего не скачивать, пока не узнаю, что это образ из соображений безопасности - это имеет смысл? Дайте мне знать, если я неправильно понимаю суть   -  person d3wannabe    schedule 31.03.2016


Ответы (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 ) 
?>
person Avinash Sinha    schedule 31.03.2016
comment
но это ничего не возвращает для ссылки Reuters? - person d3wannabe; 31.03.2016
comment
Извините, это работает отлично - большое спасибо - я не знаю почему, но для этого URL-адреса значение, которое я передавал моему PHP, было обрезано после? M = 02. Хммммм - person d3wannabe; 31.03.2016

Используй это

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

Убедись в том, что:

  1. Вы указываете правильный путь к изображению там
  2. Изображение имеет доступ для чтения
  3. Каталог образа chmod до 755

Также попробуйте указать путь к префиксу $_SERVER["DOCUMENT_ROOT"], это иногда помогает, когда вы не можете читать файлы.

ref: Получить высоту и ширину изображения как целые числа?

person Bhargav Variya    schedule 14.10.2020