ImageCapture:takePhoto() 方法

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表格

takePhoto()ImageCapture 接口的方法,它使用提供 MediaStreamTrack 的视频捕获设备进行一次曝光,并返回一个 Promise,该 Promise 解析为包含数据的 Blob

语法

js
takePhoto()
takePhoto(photoSettings)

参数

photoSettings 可选

一个用于设置要拍摄照片选项的对象。可用的选项是

fillLightMode

捕获设备的闪光灯设置,可以是 "auto""off""flash"

imageHeight

所需的图像高度,以整数表示。如果用户代理仅支持离散高度,则它会选择最接近此设置的高度值。

imageWidth

所需的图像宽度,以整数表示。如果用户代理仅支持离散宽度,则它会选择最接近此设置的宽度值。

redEyeReduction

一个布尔值,指示如果可用,是否应使用消除红眼功能。

返回值

一个解析为 BlobPromise

异常

InvalidStateError DOMException

如果构造函数中传递的 MediaStreamTrackreadyState 属性不是 live,则抛出此异常。

UnknownError DOMException

如果操作因任何原因无法完成,则抛出此异常。

示例

此示例摘自此 简单的图像捕获演示。它展示了如何使用 takePhoto() 返回的 Promise 将返回的 Blob 复制到 <img> 元素。为简单起见,它没有显示如何实例化 ImageCapture 对象。

js
let takePhotoButton = document.querySelector("button#takePhoto");
let canvas = document.querySelector("canvas");

takePhotoButton.onclick = takePhoto;

function takePhoto() {
  imageCapture
    .takePhoto()
    .then((blob) => {
      console.log("Took photo:", blob);
      img.classList.remove("hidden");
      img.src = URL.createObjectURL(blob);
    })
    .catch((error) => {
      console.error("takePhoto() error: ", error);
    });
}

规范

规范
MediaStream 图像捕获
# dom-imagecapture-takephoto

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。