ImageCapture:getPhotoCapabilities() 方法

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

getPhotoCapabilities() 方法是 ImageCapture 接口的一部分,它返回一个 Promise,该 Promise 解析为一个包含可用配置选项范围的对象。

语法

js
getPhotoCapabilities()

参数

无。

返回值

一个 Promise,它解析为包含以下属性的对象

redEyeReduction

返回 "never""always""controllable" 之一。"controllable" 值表示设备的红眼消除功能可由用户控制。

imageHeight

返回一个对象,指示用户代理支持的图像高度范围。

imageWidth

返回一个对象,指示用户代理支持的图像宽度范围。

fillLightMode

返回可用填充光选项的数组。选项包括 autooffflash

异常

InvalidStateError DOMException

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

OperationError DOMException

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

示例

以下示例摘自 Chrome 的 Image Capture / 照片分辨率示例,它使用 getPhotoCapabilities() 的结果来修改输入范围的大小。此示例还演示了如何使用从设备的 MediaStream 中检索到的 MediaStreamTrack 创建 ImageCapture 对象。

js
const input = document.querySelector('input[type="range"]');

let imageCapture;

navigator.mediaDevices
  .getUserMedia({ video: true })
  .then((mediaStream) => {
    document.querySelector("video").srcObject = mediaStream;

    const track = mediaStream.getVideoTracks()[0];
    imageCapture = new ImageCapture(track);

    return imageCapture.getPhotoCapabilities();
  })
  .then((photoCapabilities) => {
    const settings = imageCapture.track.getSettings();

    input.min = photoCapabilities.imageWidth.min;
    input.max = photoCapabilities.imageWidth.max;
    input.step = photoCapabilities.imageWidth.step;

    return imageCapture.getPhotoSettings();
  })
  .then((photoSettings) => {
    input.value = photoSettings.imageWidth;
  })
  .catch((error) => console.error("Argh!", error.name || error));

规范

规范
MediaStream Image Capture
# dom-imagecapture-getphotocapabilities

浏览器兼容性

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