ImageCapture:takePhoto() 方法
takePhoto()
是 ImageCapture
接口的方法,它使用提供 MediaStreamTrack
的视频捕获设备进行一次曝光,并返回一个 Promise
,该 Promise
解析为包含数据的 Blob
。
语法
js
takePhoto()
takePhoto(photoSettings)
参数
photoSettings
可选-
一个用于设置要拍摄照片选项的对象。可用的选项是
fillLightMode
-
捕获设备的闪光灯设置,可以是
"auto"
、"off"
或"flash"
。 imageHeight
-
所需的图像高度,以整数表示。如果用户代理仅支持离散高度,则它会选择最接近此设置的高度值。
imageWidth
-
所需的图像宽度,以整数表示。如果用户代理仅支持离散宽度,则它会选择最接近此设置的宽度值。
redEyeReduction
-
一个布尔值,指示如果可用,是否应使用消除红眼功能。
返回值
异常
InvalidStateError
DOMException
-
如果构造函数中传递的
MediaStreamTrack
的readyState
属性不是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 的浏览器中加载。