Ниже приведен фрагмент кода –
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 открывает файл и обычно отображает изображение.
Поскольку ваш сервер уже загружает файл, вы также можете сделать это самостоятельно (если проблема в том, что он не может сделать это правильно для 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'];