PHP 8.6.0 Beta 1 is available for testing

imagecreatefromwebp

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

imagecreatefromwebpСоздаёт новое изображение из файла или URL-адреса

Описание

function imagecreatefromwebp(string $filename): GdImage |false

Функция imagecreatefromwebp() возвращает идентификатор изображения, которое получили по названию файла. Обратите внимание, что функция не читает анимированные файлы в формате WebP.

Подсказка

Вместо названий файлов функция принимает URL-адреса, если включили директиву fopen wrappers. Подробнее об определении названия файла рассказывает описание функции fopen() . Раздел «Протоколы и обёртки» также даёт ссылки на информацию о поддерживаемых обёртках, содержит замечания по работе с обёртками и приводит список предопределённых переменных, которые они дают.

Список параметров

filename

Путь к WebP-изображению.

Возвращаемые значения

Функция возвращает объект изображения, если выполнилась успешно, или false , если возникла ошибка.

Список изменений

Версия Описание
8.0.0 Функция теперь возвращает экземпляр класса GDImage , если выполнилась успешно; раньше возвращался ресурс (resource ).

Примеры

Пример #1 Пример конвертации WebP-изображения в JPEG-изображение функцией imagecreatefromwebp()

<?php
// Загрузить WebP-файл
$im = imagecreatefromwebp('./example.webp');
// Сконвертировать его в jpeg-файл со 100%-качеством
imagejpeg($im, './example.jpeg', 100);
?>

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
15
kawewong at gmail dot com
5 years ago
PHP GD and WebP support:
Normal WebP (VP8): supported since PHP 5.4
Transparent WebP or alpha transparency (VP8X, VP8L): supported since PHP 7.0
Animated WebP (VP8X): not supported at all.
You can use the images from here https://developers.google.com/speed/webp/gallery2
here https://ezgif.com/help/alternative-animated-image-formats
and here https://developers.google.com/speed/webp/gallery1
Test with imagecreatefromwebp('your-image.webp'); and see the errors.
You can detect animated or transparent webp using this code.
<?php
/**
 * Get WebP file info.
 * 
 * @link https://www.php.net/manual/en/function.pack.php unpack format reference.
 * @link https://developers.google.com/speed/webp/docs/riff_container WebP document.
 * @param string $file
 * @return array|false Return associative array if success, return `false` for otherwise.
 */
function webpinfo($file) {
 if (!is_file($file)) {
 return false;
 } else {
 $file = realpath($file);
 }
 $fp = fopen($file, 'rb');
 if (!$fp) {
 return false;
 }
 $data = fread($fp, 90);
 fclose($fp);
 unset($fp);
 $header_format = 'A4Riff/' . // get n string
 'I1Filesize/' . // get integer (file size but not actual size)
 'A4Webp/' . // get n string
 'A4Vp/' . // get n string
 'A74Chunk';
 $header = unpack($header_format, $data);
 unset($data, $header_format);
 if (!isset($header['Riff']) || strtoupper($header['Riff']) !== 'RIFF') {
 return false;
 }
 if (!isset($header['Webp']) || strtoupper($header['Webp']) !== 'WEBP') {
 return false;
 }
 if (!isset($header['Vp']) || strpos(strtoupper($header['Vp']), 'VP8') === false) {
 return false;
 }
 if (
 strpos(strtoupper($header['Chunk']), 'ANIM') !== false || 
 strpos(strtoupper($header['Chunk']), 'ANMF') !== false
 ) {
 $header['Animation'] = true;
 } else {
 $header['Animation'] = false;
 }
 if (strpos(strtoupper($header['Chunk']), 'ALPH') !== false) {
 $header['Alpha'] = true;
 } else {
 if (strpos(strtoupper($header['Vp']), 'VP8L') !== false) {
 // if it is VP8L, I assume that this image will be transparency
 // as described in https://developers.google.com/speed/webp/docs/riff_container#simple_file_format_lossless
 $header['Alpha'] = true;
 } else {
 $header['Alpha'] = false;
 }
 }
 unset($header['Chunk']);
 return $header;
}// webpinfo
?>

Reference: https://stackoverflow.com/a/68491679/128761
Usage:
<?php
$info = webpinfo('your-image.webp');
if (isset($info['Animation']) && $info['Animation'] === true) {
 echo 'It is animated webp.';
} 
if (isset($info['Alpha']) && $info['Alpha'] === true) {
 echo 'It is transparent webp.';
} 
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /