画像キャプチャ

画像キャプチャ ユースケースは、高解像度かつ高画質の写真をキャプチャできるように設計されており、簡単な手動のカメラ コントロールに加え、自動ホワイト バランス、自動露出、オート フォーカス(3A)機能を備えています。以下のオプションを含め、キャプチャした画像の使用方法は、呼び出し側が決定します。

  • takePicture(OnImageCapturedListener): このメソッドは、キャプチャした画像のメモリ内バッファを提供します。
  • takePicture(File, OnImageSavedListener): このメソッドは、指定されたファイルの場所にキャプチャした画像を保存します。
  • takePicture(File, OnImageSavedListener, Metadata): このメソッドでは、保存したファイルの EXIF に埋め込むメタデータを指定できます。

実装

写真を撮影するための基本的なコントロールが用意されています。写真の撮影には、フラッシュ オプションと連続オート フォーカスが使用されます。

写真キャプチャの遅延を最適化するには、ImageCapture.CaptureModeMIN_LATENCY に設定します。品質を最適化するには、MAX_QUALITY に設定します。

次のコードサンプルは、アプリの写真撮影を設定する方法を示しています。

Kotlin

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

    val imageCapture = ImageCapture(imageCaptureConfig)

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

Java

    ImageCaptureConfig config =
        new ImageCaptureConfig.Builder()
            .setTargetRotation(getWindowManager().getDefaultDisplay().getRotation())
            .build();

    ImagesCapture imageCapture = new ImageCapture(config);

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

カメラを設定した後、ユーザーの操作に基づいて、次のコードによって写真が撮影されます。

Kotlin

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

Java

    public void onClick() {
        File file = new File(...);

        imageCapture.takePicture(file,
            new ImageCapture.OnImageSavedListener() {
                @Override
                public void onImageSaved(File file) {
                    // insert your code here.
                }
                @Override
                public void onError(
                        ImageCapture.ImageCaptureError imageCaptureError,
                        String message,
                        Throwable cause) {
                    // insert your code here.
                }
        }
    }
    

画像キャプチャ メソッドは、JPEG 形式を完全にサポートしています。

参考情報

CameraX について詳しくは、以下の参考情報をご確認ください。

コードラボ

  • CameraX のスタートガイド
  • コードサンプル

  • CameraX の公式サンプルアプリ