跳到主要内容

如何在 Canvas 上播放 GIF 动画

如何在 Canvas 上显示 GIF 动画?

无法将 GIF 图像直接插入 Canvas。但是,可以使用外部库解析 GIF,然后将其作为 Konva.Image 图形绘制到图层中。

此示例使用 gifler 解析和绘制 GIF。也可以使用其他库。

import Konva from 'konva';

// Load gifler library
const script = document.createElement('script');
script.src = 'https://unpkg.com/gifler@0.1.0/gifler.min.js';
document.head.appendChild(script);

const stage = new Konva.Stage({
  container: 'container',
  width: window.innerWidth,
  height: window.innerHeight,
});

const layer = new Konva.Layer();
stage.add(layer);

const canvas = document.createElement('canvas');

// use external library to parse and draw gif animation
function onDrawFrame(ctx, frame) {
  // update canvas size
  canvas.width = frame.width;
  canvas.height = frame.height;
  // update canvas that we are using for Konva.Image
  ctx.drawImage(frame.buffer, 0, 0);
  // redraw the layer
  layer.draw();
}

script.onload = () => {
  gifler('https://konvajs.org/assets/yoda.gif').frames(canvas, onDrawFrame);
};

// draw resulted canvas into the stage as Konva.Image
const image = new Konva.Image({
  image: canvas,
});
layer.add(image);

操作说明:此示例展示如何使用 gifler 库在 Canvas 上渲染 GIF 动画。示例解析 GIF 并将每一帧绘制到一个 Canvas 上,然后将该 Canvas 用作 Konva.Image 图形的图像源。