ImageCapture:getPhotoCapabilities() 方法

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

语法

js
getPhotoCapabilities()

参数

无。

返回值

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

redEyeReduction

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

imageHeight

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

imageWidth

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

fillLightMode

返回一个包含可用补光选项的数组。选项包括 autooffflash

异常

InvalidStateError DOMException

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

OperationError DOMException

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

示例

以下示例摘自 Chrome 的 Image Capture / Photo Resolution Sample,它使用 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 图像捕获
# dom-imagecapture-getphotocapabilities

浏览器兼容性