当前位置: 首页 > 面试题库 >

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

华季同
2023-03-14
问题内容

在我的测试中,Bitmap创建者BitmapFactory.decodeFile()不尊重EXIF标头。

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

有没有办法 BitmapFactory.decodeFile()尊重EXIF并产生正确的答案Bitmap

如果没有,建议使用哪种模式来处理此问题?

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


问题答案:

有没有办法让BitmapFactory.decodeFile()尊重EXIF并产生正确的Bitmap?

不,对不起

建议使用哪种模式来处理此问题?

使用支持库ExifInterface确定所需的方向。然后,根据您对的使用Bitmap,旋转视图(例如ImageView)或旋转Bitmap。该示例项目说明了这两种方法,尽管我使用了一套单独的EXIF代码,因为在该示例中使用的某些内容不受支持库的支持ExifInterface



 类似资料:
  • 问题内容: 我在进行CSS设计时一直想知道的东西。 是否遵守CSS宽度的小数位数?还是四舍五入? 要么 问题答案: 如果是百分比宽度,那么可以,它是受尊重的。正如Martin所指出的,当您达到小数像素时,事情就会崩溃,但是如果您的百分比值产生整数像素值(例如,示例中200px的50.5%),您将获得明智的预期行为。 编辑: 我已经更新了示例,以显示小数像素发生了什么(在Chrome中,值被截断了,

  • 我知道我也可以通过创建一个新文档,然后通过更新,但是这个方法需要2个写操作,而且速度也慢得多。

  • 问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:

  • 问题内容: 在Java中,我们不能覆盖final方法,但是有可能重载吗? 问题答案: 是的,重载最终方法是完全合法的。 例如:

  • 我从对象和对象数组中更改了一个对象两次,这样在第一次迭代中,我过滤掉了几个对象,在第二次迭代中,我使用map更改了每个过滤后的对象。我能用减速机或更好的吗?

  • 的Javadoc表示(强调是我的): 此操作的行为显式不确定。对于并行流管道,此操作不能保证尊重流的相遇顺序,因为这样做会牺牲并行性的好处。对于任何给定的元素,操作可以在库选择的任何时间和线程中执行。如果操作访问共享状态,则它负责提供所需的同步。 同样的文本也出现在Java9早期访问Javadoc中。 如果forEach不保留遭遇顺序,则会引入bug。在报告针对NetBeans的bug之前,我想知