ImageCapture:getPhotoSettings() 方法

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

getPhotoSettings() 方法是 ImageCapture 接口的一个方法,它返回一个 Promise,该 Promise 解析为一个包含当前照片配置设置的对象。

语法

js
getPhotoSettings()

参数

无。

返回值

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

fillLightMode

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

imageHeight

所需的图像高度,以整数表示。如果浏览器只支持离散高度,它会选择最接近此设置的宽度值。

imageWidth

所需的图像宽度,以整数表示。如果浏览器只支持离散宽度,它会选择最接近此设置的宽度值。

redEyeReduction

一个布尔值,表示是否应使用红眼消除(如果可用)。

异常

InvalidStateError DOMException

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

OperationError DOMException

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

示例

以下示例摘自 Chrome 的 Image Capture / 照片分辨率示例,使用 getPhotoSettings() 的结果来修改输入范围的大小。此示例还展示了如何使用从设备的 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-getphotosettings

浏览器兼容性

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