createImageBitmap() 全局函数

注意: 此功能在 Web 工作线程 中可用。

createImageBitmap() 全局方法从给定源创建一个位图,可以选择裁剪以仅包含该源的一部分。该方法存在于窗口和工作线程的全局范围内。它接受各种不同的图像源,并返回一个 Promise,该承诺解析为一个 ImageBitmap

语法

js
createImageBitmap(image)
createImageBitmap(image, options)
createImageBitmap(image, sx, sy, sw, sh)
createImageBitmap(image, sx, sy, sw, sh, options)

参数

image

图像源,可以是以下任何一种

sx

将从中提取 ImageBitmap 的矩形的参考点的 x 坐标。

sy

将从中提取 ImageBitmap 的矩形的参考点的 y 坐标。

sw

将从中提取 ImageBitmap 的矩形的宽度。此值可以为负数。

sh

将从中提取 ImageBitmap 的矩形的高度。此值可以为负数。

options 可选

设置图像提取选项的对象。可用的选项是

imageOrientation

指定位图图像的定向方式。

from-image

根据 EXIF 方向元数据定向图像,如果存在(默认)。

flipY

根据 EXIF 方向元数据定向图像,如果存在,然后垂直翻转。

none

根据图像编码定向图像,忽略有关方向的任何元数据(例如 EXIF 元数据,它可能添加到图像中以指示相机是侧着拍摄的,以便以纵向模式捕获图像)。

premultiplyAlpha

指定位图的颜色通道是否应该预乘以 alpha 通道。其中之一:nonepremultiplydefault(默认)。

colorSpaceConversion

指定图像是否应该使用颜色空间转换解码。nonedefault(默认)。值 default 表示使用特定于实现的行为。

resizeWidth

一个长整型,指示输出宽度。

resizeHeight

一个长整型,指示输出高度。

resizeQuality

指定用于将输入调整大小以匹配输出尺寸的算法。其中之一:pixelatedlow(默认)、mediumhigh

返回值

一个 Promise,它解析为一个 ImageBitmap 对象,其中包含来自给定矩形的位图数据。

示例

从精灵表创建精灵

此示例加载精灵表,提取单个精灵,然后将每个精灵渲染到画布上。精灵表是一个图像,其中包含多个较小的图像,您希望能够分别渲染这些图像。

js
const canvas = document.getElementById("myCanvas"),
  ctx = canvas.getContext("2d"),
  image = new Image();

// Wait for the sprite sheet to load
image.onload = () => {
  Promise.all([
    // Cut out two sprites from the sprite sheet
    createImageBitmap(image, 0, 0, 32, 32),
    createImageBitmap(image, 32, 0, 32, 32),
    createImageBitmap(image, 0, 0, 50, 50, { imageOrientation: "flipY" }),
  ]).then((sprites) => {
    // Draw each sprite onto the canvas
    ctx.drawImage(sprites[0], 0, 0);
    ctx.drawImage(sprites[1], 32, 32);
    ctx.drawImage(sprites[2], 64, 64);
  });
};

// Load the sprite sheet from an image file
image.src = "50x50.jpg";

规范

规范
HTML 标准
# dom-createimagebitmap-dev

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅