getimagesize не может получить размер удаленных файлов webp с версией 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 () из-за неподдерживаемого формата, который вызывает это, или из-за проблем с доступностью изображения.

Заметка —

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

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

0

Решение

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

Другие решения

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

$bits = imagetypes();

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

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

По вопросам рекламы [email protected]