При сравнении изображений, сделанных с помощью приложения, созданного мной на Pixel8a, и стандартного приложения камеры, объект изображения Снимок, сделанный с помощью созданного мною приложения, при увеличении выглядит немного размытым.
Условия съемки те же, я пробовал с максимальным разрешением.
Требуются ли какие-либо другие настройки для получения изображений того же качества, что и стандартная камера? app?
Ниже приведен мой код при связыванииToLifecycle.
Код: Выделить всё
public void bindPreview(CameraUiControls controls,
@NonNull ProcessCameraProvider cameraProvider) {
try {
var size = getMaxResolution(getActivity().getApplicationContext());
var screenAspectRatio = aspectRatio(size.getHeight(), size.getWidth());
var rotation = 0;
var disp = controls.getPreviewView().getDisplay();
if (Objects.nonNull(disp)) {
rotation = disp.getRotation();
}
controls.getPreviewView().setScaleType(PreviewView.ScaleType.FIT_CENTER);
this.preview = new Preview.Builder()
.setTargetAspectRatio(screenAspectRatio)
.setTargetRotation(rotation)
.build();
this.captureSize = new Size(size.getHeight(), size.getWidth());
// Set up the capture use case to allow users to take photos
imageCapture = new ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
.setTargetRotation(rotation)
.setTargetResolution(captureSize)
.build();
CameraSelector cameraSelector = new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build();
imageAnalysis = new ImageAnalysis.Builder()
.setTargetResolution(captureSize)
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build();
imageAnalysis.setAnalyzer(ContextCompat.getMainExecutor(getContext()),
image -> {
createClip(image);
image.close();
});
var aspectRatio = new Rational(size.getHeight(),
size.getWidth());
var viewPort = new ViewPort.Builder(
aspectRatio,
this.preview.getTargetRotation()
).build();
var useCaseGroup = new UseCaseGroup.Builder()
.addUseCase(this.preview)
.addUseCase(this.imageCapture)
.addUseCase(imageAnalysis)
.build();
this.cameraProvider.unbindAll();
this.camera = cameraProvider.bindToLifecycle(this,
cameraSelector,
useCaseGroup);
preview.setSurfaceProvider(controls.getPreviewView().getSurfaceProvider());
} catch (Exception e) {
Timber.e(e);
}
}
CameraX API: 1.2.1
Pixel8a ОС: 14
Спасибо
Я попробовал обновить версию CameraXAPI до 1.4.0, но результат тот же.
Подробнее здесь: https://stackoverflow.com/questions/793 ... y-as-the-s
Мобильная версия