WebWost WebWostbeta

Intervention Image и webp

Intervention Image и webp. Решение ошибки "Unable to init from given binary data"

PHP

Al-Sher

Здравствуйте. Недавно была необходимость работать с изображениями, расширение которых было webp, и я был удивлен, что Intervention Image отказывается принимать изображением. При попытках использовать команду

Image::make('path_to_image.webp')

Я получал ошибку > Unable to init from given binary data

Первое, что пришло мне в голову - Intervention Image не смог получить изображение. Тогда я начал пытаться использовать следующий код:

$imgContent = file_get_contents('path_to_image.webp');
$img = Image::make($imgContent);

И данный код должен был бы работать, ведь Intervention Image поддерживает бинарные данные. Но неудача - снова ошибка. Я перепроверял содержимое переменной imgContent и оно было в нормальном состоянии. Лишь тогда я стал догадываться, что Intervention Image не может обработать webp изображение. Я был расстроен и пошел гуглить... Наткнулся на github и огорчился еще больше - данная проблема существует уже очень давно. Там же я наткнулся на попытки преобразовать изображение в base64 и скормить его Intervention Image:

$base64Image = base64_encode(file_get_contents('path_to_image.webp'));
$image = Image::make($base64Image);

К сожалению и данный вариант не сработал. Как же я был счастлив, вспомнив что Intervention Image поддерживает GD Resource. Моя жизнь загорелась новыми красками. Я нашел способ скормить изображение Intervention Image:

$imgContent = imagecreatefromwebp('path_to_image.webp');
$img = Image::make($imgContent);

Данный способ у меня работает стабильно. Надеюсь, что данная небольшая запись поможет людям подружить Intervention Image и webp.

0 комментариев

Новый комментарий