Ale*_*mov 3 java android exif image bitmap
在我的测试中,Bitmap创建者BitmapFactory.decodeFile()不尊重 EXIF 标头。
例如,对于由设备拍摄的人像图像,它不会根据相机方向旋转实际像素数据,而是将其存储在 EXIF 标头中,当我调用Bitmap.getWidth()and 时Bitmap.getHeight(),它们返回错误值(高度为宽度,反之亦然)。
有没有办法 BitmapFactory.decodeFile()尊重EXIF并产生正确的Bitmap?
如果没有,处理这个问题的推荐模式是什么?
如果没有经验丰富的 Android 开发人员的建议,我所看到的唯一方法是对拍摄的图像进行预处理(加载、根据 EXIF 旋转并保存)。但除了巨大的处理开销之外,这可能会导致OutOfMemoryException大相机分辨率的 s (在您无法通过使用BitmapFactory.Options.inSampleSize加载缩小图像来降低质量的情况下)。
你现在可以用 Glide 做到这一点。请参阅此处的“后台线程”部分:
https://bumptech.github.io/glide/doc/getting-started.html
位图位图 = Glide.with(context).asBitmap().load(new File(fileName)).skipMemoryCache(true).submit().get();
Glide 考虑了 EXIF。您需要在后台线程上加载它。我使用的是 Glide 4.9.0