2015-06-19 4 views
0

Я использую Android-Crop https://github.com/jdamcd/android-crop, чтобы квадрат обрезать результат из захвата изображения с помощью камеры onActivityResult. Проблема в том, что по какой-то причине эта библиотека плавно поворачивает изображения непредсказуемо.Android-библиотека - андроид-урожай вращает снятые изображения

Ниже приведена Деятельность библиотеки, которая создает выход, который я обрабатываю onActivityResult - CropImageActivity.

Результат обрезки просто загружен Picasso в ImageView. Файл изображения временно хранится в Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DCIM), этот файл предоставляется как EXTRA_OUTPUT для захвата изображения, затем обрезается, а затем загружается в ImageVIew.

Проблема в том, что для некоторых телефонов Android изображения повернуты правильно, а для других - нет. Nexus 5 в порядке, Xperia Z нет и так далее ...

Я ищу простой способ убедиться, что изображения правильно повернуты. Заранее благодарим за помощь!

+0

Что заставляет вас думать, что это вина этой библиотеки, а не ошибка устройств или приложений для камеры, которые вы используете на них? Вы изучаете заголовки EXIF, чтобы увидеть, включен ли заголовок ориентации? – CommonsWare

+0

При пропуске шага с обрезкой изображения имеют соответствующую ориентацию. – toshkinl

+0

Оформить заказ [Android-Image-Cropper] (https://github.com/ArthurHub/Android-Image-Cropper). – Arthur

ответ

0

После некоторой борьбы я нашел ответ. Библиотека извлекает данные exif из MediaStore, но я не хранил там временные файлы. На мой взгляд, есть два возможных решения. Первый - прочитать ориентацию exif перед обрезкой и установить атрибут ориентации после обрезки. Другой способ - сохранить ваши файлы в медиа-магазине.

CropUtil.copyExifRotation(CropUtil.getFromMediaUri(this, this.getContentResolver(), 
this.sourceUri), CropUtil.getFromMediaUri(this, this.getContentResolver(), this.saveUri)); 
     this.setResultUri(this.saveUri); 
Смежные вопросы