Android のCameraX において、Previewの中に矩形を作って、その範囲を切り出したいのですが、Previewで表示している範囲が、ImageCaptureの範囲と一致しないために切り出すことができません。
以下の(1)(2)どちらかを実現できないでしょうか。
(1)Previewで表示しているものをBitmapで書き出す
(2)Previewの横幅が、ImageCaptureの横幅の何%に相当する範囲を表示しているか知る
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
自己解決
PreviewとImageCaptureのTargetResolutionにPreviewの画面幅を指定することで解決しました。
kotlin
1 private fun startCamera() { 2 val cameraProviderFuture = ProcessCameraProvider.getInstance(this) 3 4 cameraProviderFuture.addListener({ 5 val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get() 6 val provider = binding.viewFinder.surfaceProvider 7 8 // Preview 9 val preview = Preview.Builder() 10 .setTargetResolution(Size(binding.viewFinder.width, binding.viewFinder.height)) 11 .setTargetRotation(Surface.ROTATION_0) 12 .build() 13 .also { 14 it.setSurfaceProvider(provider) 15 } 16 17 imageCapture = ImageCapture.Builder() 18 .setTargetResolution(Size(binding.viewFinder.width, binding.viewFinder.height)) 19 .setTargetRotation(Surface.ROTATION_0) 20 .build() 21 22 // Select back camera as a default 23 val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA 24 25 val aspectRatio = Rational(binding.viewFinder.width, binding.viewFinder.height) 26 val viewPort = ViewPort.Builder(aspectRatio, preview.getTargetRotation()).build() 27 28 val useCaseGroup = UseCaseGroup.Builder() 29 .addUseCase(preview) 30 .addUseCase(imageCapture!!) 31 .setViewPort(viewPort) 32 .build() 33 34 try { 35 // Unbind use cases before rebinding 36 cameraProvider.unbindAll() 37 38 // Bind use cases to camera 39 cameraProvider.bindToLifecycle( 40 this, cameraSelector, useCaseGroup) 41 42 } catch (exc: Exception) { 43 Log.e(TAG, "Use case binding failed", exc) 44 } 45 46 }, ContextCompat.getMainExecutor(this)) 47 } 48
投稿2021/09/01 06:19
総合スコア88
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。