Skip to content

sud.createImageDecoder ​

JS
SUDImageDecoder sud.createImageDecoder(Object options)

功能描述

创建图片解码器。用于 GIF、APNG、Animated WebP 的显式逐帧解码。

参数

  • Object options: 创建参数,具体的属性见下表

options 的属性说明:

属性键值类型默认值是否必填说明
typestring是编码数据的 MIME 类型
dataArrayBuffer / TypedArray是编码字节。
colorSpaceConversionstring"default"否是否自动做色彩空间转换
desiredWidthnumber否期望输出宽度。
desiredHeightnumber否期望输出高度。
preferAnimationboolean否是否选择动画轨道
transferArrayBuffer[][]否用来转移 ArrayBuffer 所有权

Runtime 扩展:

属性键值类型默认值是否必填说明
srcstring否网络URL或本地文件路径。

返回值

  • SUDImageDecoder: 解码器对象

示例:

JS
const decoder = sud.createImageDecoder({
  type: "image/webp",
  src: "assets/loading.webp"
});

decoder.onerror = function (error) {
  console.error(error.errMsg);
};

async function play() {
  const track = decoder.tracks.selectedTrack;
  let frameIndex = 0;
  while (true) {
    const result = await decoder.decode({ frameIndex: frameIndex });
    const videoFrame = result.image;
    ctx.clearRect(0, 0, decoder.width, decoder.height);
    ctx.drawImage(videoFrame, 0, 0);
    const delayMs = Math.max(videoFrame.duration / 1000, 16);
    videoFrame.close();
    if (track.frameCount <= 1) {
      return;
    }
    frameIndex = (frameIndex + 1) % track.frameCount;
    await new Promise(function (resolve) {
      setTimeout(resolve, delayMs);
    });
  }
}

play();
JS
const decoder = sud.createImageDecoder({
  type: "image/gif",
  data: arrayBuffer
});