Почему я получаю Файл не найден для ExifInterface с Android? - PullRequest
0 голосов
/ 23 июня 2019

Я использую Firebase для хранения изображений для моего приложения для Android.Затем изображения появляются в моем приложении в виде переработчика.Это все работает нормально, однако некоторые изображения появляются вбок.В частности, те, которые взяты с Galaxy S7.

Я знаю, что мне нужно получить exif-информацию из изображений, но когда я пытаюсь получить ошибку, файл не найден, что я могу сделать?

private int getImageOrientation(String imagePath){
        int rotate = 0;
        try {
            File imageFile = new File(imagePath);

            ExifInterface exif = new ExifInterface(imageFile.getAbsolutePath());
            int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_270:
                    rotate = 270;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    rotate = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_90:
                    rotate = 90;
                    break;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return rotate;
    }
W/System.err: java.io.FileNotFoundException: /https:/firebasestorage.googleapis.com/v0/b/pickit-d193d.appspot.com/o/posts%2Ff12e73ad-9bc5-4485-90e5-927dbf8539a5.jpg?alt=media&token=9f92c0d7-0518-4721-a7b5-235c1fb3cc76 (No such file or directory)

Мне просто нужноэто возвращает количество поворота изображения, но оно всегда возвращает 0, так как выбрасывает выражение File not found.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 23 июня 2019

https:/firebasestorage.googleapis.com/v0/b/pickit-d193d.appspot.com/o/posts%2Ff12e73ad-9bc5-4485-90e5-927dbf8539a5.jpg?alt=media&token=9f92c0d7-0518-4721-a7b5-235c1fb3cc76 - это URL-адрес HTTPS. Это не файл в файловой системе.

Загрузите файл, затем используйте версию AndroidX ExifInterface, чтобы проверить его.

Или, если вы будете показывать эти изображения в ImageView, используйте библиотеку загрузки изображений, такую ​​как Glide или Picasso, которая должна учитывать заголовки ориентации EXIF ​​при отображении изображений.

0 голосов
/ 26 июня 2019

Таким образом, ответ, который я реализовал, работает для меня, но я не уверен, что он будет работать во всех случаях.Поэтому, когда я создаю изображение, я устанавливаю логическое значение, чтобы проверить, превышает ли высота ширину.Затем, когда я загружаю изображение в Picasso, у меня есть:

Picasso.get()
                .load(imageURL_1)
                .fit()
                .rotate(post.isRotated()?0:90)
                .transform(new RoundedCornersTransformation(30,30))
                .into(imageView1);

Как я уже сказал, это работает, только если изображение повернуто против часовой стрелки на 90 градусов.Если есть лучшее решение, я приветствую ваши ответы, но это лучшее, что я могу сделать без доступа к информации EXIF.

...