是否可以使 BitmapFactory.decodeFile() 尊重 EXIF?

2023-12-11

在我的测试中,Bitmap由...制作BitmapFactory.decodeFile()不尊重 EXIF 标头。

例如,当我打电话时,设备拍摄的肖像图像不会根据相机方向旋转实际像素数据,而是将其存储在 EXIF 标头中Bitmap.getWidth() and Bitmap.getHeight(),它们返回不正确的值(高度和宽度,反之亦然)。

有没有办法制作BitmapFactory.decodeFile()尊重 EXIF 并生成正确的Bitmap?

如果不是,处理此问题的推荐模式是什么?

如果没有经验丰富的 Android 开发人员的建议,我看到的唯一方法是预处理拍摄的图像(加载、根据 EXIF 旋转并保存)。但除了巨大的处理开销之外,这可能会导致OutOfMemoryExceptions 用于大相机分辨率(在您无法通过使用来降低质量的情况下)BitmapFactory.Options.inSampleSize加载缩小的图像)。


您现在可以使用 Glide 来完成此操作。请参阅此处的“后台线程”部分:

https://bumptech.github.io/glide/doc/getting-started.html

位图 bitmap = Glide.with(context).asBitmap().load(new File(fileName)).skipMemoryCache(true).submit().get();

Glide 会考虑 EXIF。您需要将其加载到后台线程上。我使用的是 Glide 4.9.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使 BitmapFactory.decodeFile() 尊重 EXIF? 的相关文章

随机推荐