OffscreenCanvas: метод transferToImageBitmap()
Базовая версия 2023
Новое доступное свойство
С марта 2023 года данная функция работает на последних версиях браузеров и устройств. Возможно, эта функция не будет работать на более старых устройствах или браузерах.
Примечание: Данная функция доступна в Web Workers.
Метод OffscreenCanvas.transferToImageBitmap() создаёт объект ImageBitmap на основе самого последнего рендеринга изображения OffscreenCanvas. Метод OffscreenCanvas выделяет новую область памяти для последующего рендеринга.
Синтаксис
transferToImageBitmap()
Параметры
Нет.
Возвращаемое значение
Новенехонький объект ImageBitmap.
Этот ImageBitmap ссылается на потенциально большой ресурс графики, и для обеспечения стабильности вашей веб-приложения важно избегать выделения слишком большого количества таких ресурсов в любой момент. По этой причине важно гарантировать, что ImageBitmap либо будет использован, либо закрыт.
Как описано в примерах OffscreenCanvas, передача этого ImageBitmap в ImageBitmapRenderingContext.transferFromImageBitmap() использует объект ImageBitmap; он больше не ссылается на базовый ресурс графики и не может быть передан ни в какие другие веб-API.
Если вашей целью является передача ImageBitmap в другие веб-API, которые не потребляют его — например, CanvasRenderingContext2D.drawImage() — то вы должны закрыть его, когда закончите с ним, вызвав ImageBitmap.close(). Не просто отпускайте JavaScript-ссылку на ImageBitmap; это сохранит его графический ресурс живым до следующего выполнения сборщика мусора.
Если вы вызываете transferToImageBitmap() и не собираетесь передавать его в ImageBitmapRenderingContext.transferFromImageBitmap(), задумайтесь, нужно ли вообще вызывать transferToImageBitmap(). Многие веб-API, которые принимают ImageBitmap, также принимают OffscreenCanvas в качестве аргумента.
Исключения
-
InvalidStateErrorDOMException -
Выбрасывается, если:
- холст был передан в другую область контекста, например, в рабочий процесс
- режим контекста холста не был задан вызовом
OffscreenCanvas.getContext().
Примеры
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 |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
transferToImageBitmap |
69 | 79 | 105 | 56 | 16.4 | 69 | 105 | 48 | 16.4 | 10.0 | 69 |
См. также
- Интерфейс, определяющий этот метод,
OffscreenCanvas ImageBitmapRenderingContext.transferFromImageBitmap
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas/transferToImageBitmap