val imageCaptureConfig = ImageCaptureConfig.Builder().apply {
setLensFacing(CameraX.LensFacing.FRONT)
setCaptureMode(CaptureMode.MAX_QUALITY)
setBufferFormat(ImageFormat.YUV_420_888)
setTargetResolution(Size(3264, 2448))
// We request aspect ratio but no resolution to match preview config but letting
// CameraX optimize for whatever specific resolution best fits requested capture mode
setTargetAspectRatio(Rational(3,4))
// Set initial target rotation, we will have to call this again if rotation changes
// during the lifecycle of this use case
setTargetRotation(viewFinder.display.rotation)
}.build()
imageCapture.takePicture(object : ImageCapture.OnImageCapturedListener() {
override fun onCaptureSuccess(image: ImageProxy?, rotationDegrees: Int) {
println("captureSuccess h: ${image?.height} w: ${image?.width}")
}
override fun onError(imageCaptureError: ImageCapture.ImageCaptureError, message: String, cause: Throwable?) {
println(message)
}
})
Выше приведен код, который я установил для захвата изображения из версии Samsung S8 для США. Я хочу иметь формат YUV с максимальным выходным разрешением 3264 * 2448. Тем не менее, вместо этого я получил результат 1440 * 1080. Я пробовал на S9 и азиатской версии S8, код отлично работает на обоих телефонах. Странно, когда я устанавливаю формат JPEG, он будет работать на этом телефоне.
, и я попробовал также S7 и пиксель 2, пиксель 2 может выводить YUV с максимальным поддерживаемым разрешением (не код выше), но S7 не может, также дает мне 1080 * 1440 вместо этого.
Это ошибка CameraX? Если да, то есть ли какое-нибудь решение кроме использования обратно в Camera2?
Спасибо!