OffscreenCanvas: transferToImageBitmap() 方法

基线 2023

新功能

2023 年 3 月起,此功能可在最新的设备和浏览器版本中使用。此功能可能在较旧的设备或浏览器中无法使用。

**注意:** 此功能在 Web Workers 中可用。

**OffscreenCanvas.transferToImageBitmap()** 方法从 OffscreenCanvas 最近渲染的图像创建 ImageBitmap 对象。OffscreenCanvas 为其后续渲染分配一个新的图像。

语法

js
transferToImageBitmap()

参数

无。

返回值

一个新分配的 ImageBitmap

ImageBitmap 引用了可能很大的图形资源,为了确保您的 Web 应用程序保持健壮,重要的是避免在任何时候分配太多此类资源。因此,必须确保 ImageBitmap使用关闭

OffscreenCanvas 示例中所述,将此 ImageBitmap 传递给 ImageBitmapRenderingContext.transferFromImageBitmap()使用 ImageBitmap 对象;它不再引用底层图形资源,也不能传递给任何其他 Web API。

如果您的目标是将 ImageBitmap 传递给不使用它的其他 Web API(例如,CanvasRenderingContext2D.drawImage()),则在完成后,应通过调用 ImageBitmap.close()关闭它。不要简单地丢弃对 ImageBitmap 的 JavaScript 引用;这样做会使它的图形资源保持活动状态,直到下次垃圾收集器运行。

如果您调用 transferToImageBitmap() 并且不打算将其传递给 ImageBitmapRenderingContext.transferFromImageBitmap(),请考虑是否需要调用 transferToImageBitmap()。许多接受 ImageBitmap 的 Web API 也接受 OffscreenCanvas 作为参数。

示例

js
const offscreen = new OffscreenCanvas(256, 256);
const gl = offscreen.getContext("webgl");

// Perform some drawing using the gl context

offscreen.transferToImageBitmap();
// ImageBitmap { width: 256, height: 256 }

// Either:
// Pass this `ImageBitmap` to `ImageBitmapRenderingContext.transferFromImageBitmap`
// or:
// Use the `ImageBitmap` with other web APIs, and call `ImageBitmap.close()`!

规范

规范
HTML 标准
# dom-offscreencanvas-transfertoimagebitmap-dev

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅