为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在使用 Android 的 ExifInterface 中出现“未找到文件”错误?

为什么我在使用 Android 的 ExifInterface 中出现“未找到文件”错误?

泛舟湖上清波郎朗 2023-02-16 16:08:40
我正在使用 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 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

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是一个 HTTPS URL。它不是文件系统上的文件。

下载该文件,然后使用AndroidX 版本ExifInterface对其进行检查。

或者,如果您将以ImageView.


查看完整回答
反对 回复 2023-02-16
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

所以我实施的答案对我有用,但我不确定它是否适用于所有情况。因此,当我创建图像时,我设置了一个布尔值来检查高度是否大于宽度。然后,当我在毕加索中加载图像时,我有:

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

就像我说的,这只有在图像逆时针旋转 90 度时才有效。如果有更好的解决方法,我欢迎您的回答,但这是我在不访问 EXIF 信息的情况下所能做的最好的事情。


查看完整回答
反对 回复 2023-02-16
  • 2 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信