2015-03-09 2 views
0

У меня есть следующий простой код, который я использую для исследования ориентации изображения.файл запроса uri с разрешением контента?

Cursor cursor = getContentResolver().query(photoUri, 
      new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null); 

Когда фотоури является содержанием uri i.e., начинается с содержимого: // курсор извлекается в порядке. Я получаю contentUri, когда я выбираю изображение из галереи.

Однако, когда photoUri является файловым файлом, который начинается с файла: //a/b/c.jpg (что происходит при захвате изображения с камеры), курсор имеет значение null.

Что дает? Я действительно смущен ситуацией.

+0

Это нормальное ожидаемое поведение. Каков твой вопрос ? – Budius

+0

Ну, я хочу, чтобы иметь возможность запросить файлю тоже. Мне нужно также получить курсор из изображения, определенного файривой. Любые указатели? –

ответ

1

отвечая на комментарий:

Вы не можете. MediaStore.Images.ImageColumns.ORIENTATION - это столбец базы данных, хранящийся в базе данных . База данных file:// не содержит такого столбца, поэтому вы не можете запросить его.

отвечая на вопрос:

Для извлечения ориентации, Android имеют родной ExifInterface класс: https://developer.android.com/reference/android/media/ExifInterface.html

ExifInterface exif = new ExifInterface(filePath); 
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); 
+0

Это немного очищает. Последний бит. Раньше я использовал ExifInterface. Однако я слышал, что он не подходит для большинства устройств и работает только на некоторых устройствах. Поэтому я вернулся к методу курсора. Вы считаете безопасным использовать Exif? –

+1

нет действительно. На нем много ошибок. Но я считаю, что 'content: //' DB генерирует свои данные из 'ExifInterface' в любом случае. Я знаю по опыту, что библиотека Picasso (http://square.github.io/picasso/) отлично справляется с ориентацией, возможно, вам стоит проверить их исходный код, чтобы посмотреть, как они это делают. – Budius

Смежные вопросы