Полное руководство по получению ориентации из файла локального каталога в Android

При разработке Android получение информации об ориентации из файла локального каталога может оказаться полезной задачей. В этой статье мы рассмотрим различные методы достижения этой цели, а также примеры кода. Мы рассмотрим различные подходы, чтобы вы могли выбрать тот, который лучше всего соответствует вашим потребностям.

Метод 1: использование ExifInterface
Класс ExifInterface в Android обеспечивает доступ к метаданным Exif файла изображения, включая информацию об ориентации. Вот пример того, как получить ориентацию с помощью ExifInterface:

ExifInterface exifInterface = new ExifInterface(filePath);
int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);

Метод 2: использование MediaMetadataRetriever
MediaMetadataRetriever — еще один полезный класс для получения метаданных из медиафайлов, включая ориентацию. Вот пример того, как его использовать:

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(filePath);
String rotation = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
int orientation = rotation != null ? Integer.parseInt(rotation) : 0;

Метод 3: использование BitmapFactory
Вы также можете использовать класс BitmapFactory для декодирования растрового изображения из файла и последующего получения ориентации. Вот пример:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, options);
int orientation = ExifInterface.ORIENTATION_UNDEFINED;
if (options.outMimeType != null && options.outMimeType.equals("image/jpeg")) {
    ExifInterface exifInterface = new ExifInterface(filePath);
    orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
}

Метод 4: использование ImageDecoder (уровень API 28 и выше)
Если вы ориентируетесь на уровень API 28 или выше, вы можете использовать класс ImageDecoder для декодирования файла изображения и получения ориентации. Вот пример:

try {
    ImageDecoder.Source source = ImageDecoder.createSource(new File(filePath));
    int orientation = source.getImageInfo().getRotationDegrees();
} catch (IOException e) {
    e.printStackTrace();
}

Получить информацию об ориентации из файла локального каталога в Android можно различными способами. В этой статье мы рассмотрели четыре разных подхода, каждый со своими примерами кода. В зависимости от ваших требований и уровня API, на который вы ориентируетесь, вы можете выбрать метод, который соответствует вашим потребностям. Поэкспериментируйте с этими методами и интегрируйте их в свои проекты Android, чтобы улучшить функциональность вашего приложения.