Задать вопрос
prumin
@prumin
Изучаю Java и мобильную разработку

Как сохранять ориентацию картинки после создания снимка?

Народ, хелп
Создаю свою камеру, все работает, кроме одного, при создании снимка - сохраняется он в обратной ориентации, т.е. при вертикальной - горизонтальный снимок получается, а при горизонтальной - вертикальный. Кто знает, как это лечится, хэлп, все способы из сети уже перепробовал, не помогает :с

вот часть кода, которая должна была решить проблему с ориентацией:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private void setupCamera(String cameraId) {
        CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        try {
            CameraCharacteristics cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId);
            StreamConfigurationMap map = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
            //TODO ORIENTATION OF PICTURES
            iCaptureRequestBuilder.addTarget(iImageReader.getSurface());
            iCaptureRequestBuilder.set(CaptureRequest.JPEG_ORIENTATION, getJpegOrientation(cameraCharacteristics));

            Size largestImageSize = Collections.max(Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)), new Comparator<Size>() {
                @Override
                public int compare(Size lhs, Size rhs) {
                    return Long.signum(lhs.getWidth() * lhs.getHeight() - rhs.getWidth() * rhs.getHeight());
                }
            });

            iImageReader = ImageReader.newInstance(largestImageSize.getWidth(), largestImageSize.getHeight(), ImageFormat.JPEG, 1);
            iImageReader.setOnImageAvailableListener(iOnImageAvailableListener, iBackgroundHandler);
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private int getJpegOrientation(CameraCharacteristics c) {
        int deviceOrientation = this.getWindowManager().getDefaultDisplay().getRotation();
        int sensorOrientation = c.get(CameraCharacteristics.SENSOR_ORIENTATION);
        int surfaceRotation = ORIENTATIONS.get(deviceOrientation);
        int jpegOrientation = (surfaceRotation + sensorOrientation + 270) % 360;
        return jpegOrientation;
    }
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы