getimagesize не может получить размер удаленных веб-файлов с PHP версии 5.3.29

Ниже приведен фрагмент кода –

list($campaign_image_width, $campaign_image_height, $campaign_image_type, $campaign_image_attr)=getimagesize($campaign_image); 

Где $ campaign_image содержит URL-адрес сторонних изображений.

проблема

$ campaign_image_width выводится пустым для этого URL –

https://lh3.googleusercontent.com/VRY0O_3L8VH2wxJSTiKPr72PeM5uhPPFEsHzzYdxenddpTI150M0TYpljnZisQaROR0=h256-rw

    Я не уверен, что это ограничение getimagesize () из-за неподдерживаемого формата, который вызывает это, или из-за проблем с качеством изображения.

    Заметка –

    – The = h256-rw, прикрепленный в конце, кажется, говорит серверу вернуть версию изображения другого размера.

    – Я обнаружил, что если я попытаюсь открыть файл с помощью браузера Firefox, он не отобразит изображение, а скорее попросит загрузить webp-файл (формат изображения по Google кажется). Google chrome открывает файл и обычно отображает изображение.

    Related of "getimagesize не может получить размер удаленных веб-файлов с PHP версии 5.3.29"

    Поскольку ваш сервер уже загружает файл, вы также можете сделать это самостоятельно (если проблема в том, что он не может сделать это правильно для webp). Вы можете легко сделать это, используя методы GD imagecreatefromwebp с imagesx и imagesy :

     <?php $url = 'https://lh3.googleusercontent.com/VRY0O_3L8VH2wxJSTiKPr72PeM5uhPPFEsHzzYdxenddpTI150M0TYpljnZisQaROR0=h256-rw'; $img = imagecreatefromwebp($url); $width = imagesx($img); $height = imagesy($img); var_dump($width, $height); 

    Примечание. imagecreatefromwebp() был впервые представлен в PHP 5.5, поэтому убедитесь, что ваша минимальная версия равна 5.5 с установленным расширением GD.

    Если возможно, вы можете установить собственный веб-конвертер Google как двоичный файл на своем сервере:

    https://developers.google.com/speed/webp/docs/compiling#building

    В этом случае вы запускаете Amazon linux, который основан на Fedora и, следовательно, использует yum в качестве менеджера пакетов, поэтому вы должны иметь возможность запускать следующую команду:

     sudo yum install libwebp; 

    После того, как вы установили это, вы можете убедиться, что ваш safemode поддерживает двоичный файл с помощью safe_mode_exec_dir и одного из следующих способов выполнения:

    • exec
    • passthru
    • system
    • popen

    Как только вы запустили преобразование, например. JPG, вы можете запустить обычные инструменты PHP для получения размеров изображения:

     $hnd = imagecreatefromjpeg('convertedImage.jpg'); $width = imagesx($hnd); $height = imagesy($hnd); 

    Я думаю, что это связано с неподдерживаемым форматом. Попробуйте imagetypes знать, что поддерживается.

     $bits = imagetypes(); 

    Проверьте этот пост , это может быть полезно. После установки вы сможете сделать

     $image = new Imagick($originalFilepath); $origImageDimens = $image->getImageGeometry(); $origImgWidth = $origImageDimens['width']; $origImgHeight = $origImageDimens['height'];