Ниже приведен фрагмент кода —
list($campaign_image_width, $campaign_image_height, $campaign_image_type, $campaign_image_attr)=getimagesize($campaign_image);
Где $ campaign_image содержит URL сторонних изображений.
проблема
$ campaign_image_width выходит пустым для этого URL —
Я не уверен, является ли это ограничением getimagesize () из-за неподдерживаемого формата, который вызывает это, или из-за проблем с доступностью изображения.
Заметка —
— Кажется, что добавленный в конце символ = 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
и один из следующих методов выполнения:
После того как вы запустили преобразование, например, в. 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'];