imagecreatefromwebp

(PHP 5 >= 5.5.0)

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

Описание

resource imagecreatefromwebp ( string $filename )

imagecreatefromwebp() returns an image identifier representing the image obtained from the given filename.

Подсказка

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).

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

filename

Path to the WebP image.

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

Возвращает ресурс изображения в случае успеха, или FALSE в случае ошибки.

Примеры

Пример #1 Convert an WebP image to a jpeg image using imagecreatefromwebp()

<?php
// Load the WebP file
$im imagecreatefromwebp('./example.webp');

// Convert it to a jpeg file with 100% quality
imagejpeg($im'./example.jpeg'100);
imagedestroy($im);
?>

Коментарии

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($fp90);

   
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.';

?>
2021-07-23 12:43:03
http://php5.kiev.ua/manual/ru/function.imagecreatefromwebp.html

    Поддержать сайт на родительском проекте КГБ