이미지 캡처

https://developer.android.com/training/camerax/take-photo 를 번역한 문서입니다.

이미지 캡처 유즈케이스는 고해상도, 고화질의 사진을 캡처할 수 있게 설계되어 있습니다. 그리고 자동 화이트 밸런스, 자동 노출 및 자동 초점(3A, auto-white-balance, auto-exposure, auto-focus) 기능을 제공합니다. 또한 간다한 수동 카메라 제어도 제공합니다.

호출자는 다음 옵션을 포함하여 캡처 한 이미지를 사용하는 방법을 결정해야 합니다.

  • takePicture(OnImageCapturedListener)

    • 이 메서드는 캡처 된 이미지의 메모리 버퍼를 제공합니다.

  • takePicture(File, OnImageSavedListener)

    • 이 메서드는 캡처 된 이미지를 제공된 파일 위치에 저장합니다.

  • takePicture(File, OnImageSavedListener, Metadata)

    • 이 메서드를 사용하면 저장된 파일의 Exif에 포함될 메타데이터를 지정할 수 있습니다.

구현하기

사진을 촬영하기 위한 기본적인 제어 기능을 제공합니다. 플래시 옵션과 연속 자동 초점을 사용하여 사진을 촬영할 수 있습니다.

사진 캡처 지연을 최적화하려면 ImageCapture.CaptureMode를 MIN_LATENCY로 설정합니다. 품질을 최적화하려면 MAX_QUALITY로 설정합니다.

다음 예제 코드는 사진을 촬영할 수 있도록 앱을 구성하는 방법을 보여줍니다.

val imageCaptureConfig = ImageCaptureConfig.Builder()
  .setTargetRotation(windowManager.defaultDisplay.rotation)
  .build()

val imageCapture = ImageCapture(imageCaptureConfig)

CameraX.bindToLifecycle(this as LifecycleOwner, imageCapture, imageAnalysis, preview)

카메라를 구성한 후, 이어지는 코드에서 사용자 액션에 따라 사진을 촬영합니다.

fun onClick() {
    val file = File(...)
    imageCapture.takePicture(file,
        object : ImageCapture.OnImageSavedListener {
            override fun onError(error: ImageCapture.UseCaseError,
                                 message: String, exc: Throwable?) {
                // insert your code here.
            }
            override fun onImageSaved(file: File) {
                // insert your code here.
            }
        })
}

이미지 캡처 메서드는 JPEG 형식을 완벽하게 지원합니다.

추가 자료

CameraX에 대한 자세한 내용은 아래의 추가 자료를 참고 합니다.

코드랩

코드 예제

Last updated

Was this helpful?