ImageCapture.takePhoto()

ImageCapture 인터페이스의 takePhoto() 메서드는 MediaStreamTrack을 제공하는 비디오 캡처 장치를 사용해 단일 노출 촬영을 하고, 그 데이터를 담은 Blob으로 이행하는 Promise를 반환합니다.

구문

js
const blobPromise = imageCaptureObj.takePhoto([photoSettings]);

매개변수

photoSettings Optional

사진을 촬영할 때 사용할 옵션을 나타내는 객체. 가능한 옵션은 다음과 같습니다.* fillLightMode: 캡처 장치의 플래시 설정. "auto", "off", "flash" 중 하나를 사용할 수 있습니다.

  • imageHeight: 원하는 이미지 크기의 높이를 나타내는 정숫값. 일련의 정해진 크기만 지원하는 경우, 사용자 에이전트는 이 값과 제일 가까운 높이를 사용합니다.
  • imageWidth: 원하는 이미지 크기의 너비를 나타내는 정숫값. 일련의 정해진 크기만 지원하는 경우, 사용자 에이전트는 이 값과 제일 가까운 너비를 사용합니다.
  • redEyeReduction: 적목 현상 감소 기능이 존재하는 경우, 사용할지 나타내는 불리언 값.

반환 값

Blob으로 이행하는 Promise.

예제

다음 코드는 Simple Image Capture 데모에서 가져온 것으로, takePhoto()가 반환한 PromiseBlob을 사용해 <img> 요소에 할당하는 방법을 보입니다. 코드를 짧게 유지하기 위해 ImageCapture 객체의 초기화 과정은 생략했습니다.

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

takePhotoButton.onclick = takePhoto;

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

명세

Specification
MediaStream Image Capture
# dom-imagecapture-takephoto

브라우저 호환성

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
takePhoto
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Experimental. Expect behavior to change in the future.
User must explicitly enable this feature.
Has more compatibility info.