OffscreenCanvas: convertToBlob() 方法

Baseline 广泛可用 *

此功能已成熟,并可在许多设备和浏览器版本上运行。自 2023 年 3 月以来,它已在各种浏览器中可用。

* 此特性的某些部分可能存在不同级别的支持。

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

OffscreenCanvas.convertToBlob() 方法创建一个 Blob 对象,该对象代表 Canvas 中包含的图像。

可以指定所需的输出格式和图像质量。如果未指定文件格式,或者给定的格式不受支持,则数据将以 image/png 格式导出。浏览器必须支持 image/png;许多浏览器还会支持其他格式,包括 image/jpegimage/webp

对于支持编码分辨率元数据的格式,生成的图像分辨率为 96dpi。

语法

js
convertToBlob()
convertToBlob(options)

参数

options 可选

具有以下属性的对象:

type

一个指示图像格式的字符串。默认类型是 image/png;如果指定的类型不受支持,也将使用此图像格式。

quality

一个介于 01 之间的 Number,指示在使用支持有损压缩的文件格式(如 image/jpegimage/webp)创建图像时要使用的图像质量。如果未指定此选项,或者该数字超出了允许的范围,则用户代理将使用其默认质量值。

返回值

一个返回 Blob 对象的 Promise,该对象代表 Canvas 中包含的图像。

异常

该 Promise 可能会因为以下异常而被拒绝:

InvalidStateError DOMException

OffscreenCanvas 未分离;换句话说,它仍然与 DOM 相关联,而不是与当前工作线程相关联。

SecurityError DOMException

Canvas 上下文模式为 2d,并且位图不是源净的;至少部分内容已从加载文档的站点以外的其他站点加载,或者可能已加载。

IndexSizeError DOMException

Canvas 位图没有像素(水平或垂直尺寸为零)。

EncodingError DOMException

由于编码错误,无法创建 blob。

示例

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

// Perform some drawing using the gl context

offscreen.convertToBlob().then((blob) => console.log(blob));
// Blob { size: 334, type: "image/png" }

规范

规范
HTML
# dom-offscreencanvas-converttoblob-dev

浏览器兼容性

另见