OffscreenCanvas: transferToImageBitmap() 方法
注意:此功能在 Web Workers 中可用。
OffscreenCanvas.transferToImageBitmap() 方法會建立一個 ImageBitmap 物件,該物件是 OffscreenCanvas 最近渲染的影像。OffscreenCanvas 會為後續渲染分配一個新影像。
語法
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 作為引數。
異常
InvalidStateErrorDOMException-
如果以下情況發生,將丟擲異常:
- canvas 已轉移到另一個上下文範圍(例如 worker)
- 尚未透過呼叫
OffscreenCanvas.getContext()設定 canvas 上下文模式。
示例
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 |
瀏覽器相容性
載入中…