Декодировать анимированный WebP с помощью Javascript (React/NextJS)

Я пытаюсь декодировать анимированные изображения WebP . Я хотел бы извлечь кадры , составляющие анимацию, а также задержку для каждого кадра.

Любая идея о том, как справиться с декодированием анимированных изображений WebP с использованием JavaScript в среде React/NextJS ?

Я нашел node-webpmux (https://github.com/ApeironTsuka/node-webpmux), который является webpmux (https://developers.google.com/speed/webp/docs/webpmux?hl=es-419) для JavaScript. Однако он несовместим, так как сначала пытается использовать FS и вылетает в браузерах, будучи несовместимым с React/NextJS.

1 ответ

В настоящее время я работаю с фреймворком, я вижу некоторые проблемы с моими фреймами для анимации webP, но работает нормально!

Я могу поделиться своим кодом в NodeJS:

      const WebpImage = require('node-webpmux').Image;
...
    const webPImage = await new WebpImage();
await webPImage.load(file);

if (webPImage.hasAnim) {
  const maxFrames = this.isReduceQuality() ? 1 : 3;

  if (webPImage.frames !== undefined && webPImage.frames.length > 1) {
    /**
     * Available frames for webp image.
     */
    const frames = [...webPImage.frames];

    /**
     * Evaluate to reduce the number of frames for the image.
     */
    const reduce = Math.round(webPImage.frames.length / maxFrames);

    /**
     * Cleaning frames for webp image.
     */
    webPImage.frames.splice(0, webPImage.frames.length);

    /**
     * Pushing webp image frames.
     */
    frames.forEach((frame, index) => {
      if (index % reduce === 0) {
        frame.delay = 300;
        webPImage.frames.push(frame);
      }
    });
  }

  return sharp(await webPImage.save(null), options);
Другие вопросы по тегам