Анимация не работает, когда я конвертирую Gif в webp в PHP

Я конвертирую анимированный gif в webp, но картинка webp не анимирована.

Я пропустил шаг? в документации не нахожу.

мой код:

//GD
$image = imagecreatefromgif("./mypics.gif");
imagepalettetotruecolor($image);
imagewebp($image, "./image.webp");

//Imagick
$img = new \Imagick("./mypics.gif");
$img->stripImage();
$img->setImageFormat("webp");
$img->setImageAlphaChannel(\imagick::ALPHACHANNEL_ACTIVATE);
$img->setBackgroundColor(new \ImagickPixel('transparent'));
$img->writeImage("./image.webp");

person Ludovic    schedule 20.07.2020    source источник


Ответы (2)


php-vips поддерживает анимированную сеть. Например:

// n=-1 means load all pages
// sequential access means decode pixels on demand
$image = Vips\Image::newFromFile('something.gif', [
    'n' => -1,
    'access' => 'sequential'
]); 
$image->writeToFile('something.webp');
person jcupitt    schedule 24.07.2020

GD не поддерживает анимированный WebP. Imagemagick делает, но только с относительно недавней версии 7.0.8-68 и если скомпилирован с libwebp.

Вам либо нужно установить последнюю версию imagemagick с поддержкой webp, либо использовать другой внешний инструмент, например gif2webp. .

person Maadinsh    schedule 24.07.2020
comment
Я установил imagemagick 7.0.10-24, и веб-страница анимирована. На данный момент я выполняю команду с помощью функции exec() из PHP, потому что пакет php-imagick использует версию, которая не поддерживает анимированный webp. - person Ludovic; 27.07.2020