以纵向模式从相机拍摄的加载到画布上的照片是横向的

Posted

技术标签:

【中文标题】以纵向模式从相机拍摄的加载到画布上的照片是横向的【英文标题】:Photos loaded onto canvas taken from a camera in portrait mode are landscape 【发布时间】:2013-10-28 14:06:41 【问题描述】:

如果我在 android 中以纵向模式使用相机拍摄照片,然后将其加载为位图并将其绘制到画布上,它会以逆时针方向旋转 90 度并以横向显示。我使用BitmapFactory.decodeFile(imagePath); 加载图像。有谁知道为什么会这样?

【问题讨论】:

【参考方案1】:

请在Android: Photos force captured in Landscape mode 上查看答案。

底线是,捕获保留硬件摄像头方向,这在大多数手机中是横向的。您几乎没有办法找到设备的实际方向与拍摄照片时的地平线,例如JPEG 文件的 EXIF 标头。解码此类文件的位图方法不尊重 EXIF 信息,即使它存在。但您可以选择其中一种方式在加载位图后对其应用旋转。

另一种方法是对捕获的 JPEG 文件应用旋转,如Lossless JPEG Rotate (90/180/270 degrees) in Java? 中所述。 PlayStore 上甚至还有一个应用程序可以做到这一点:https://play.google.com/store/apps/details?id=com.lunohod.jpegtool。

【讨论】:

以上是关于以纵向模式从相机拍摄的加载到画布上的照片是横向的的主要内容,如果未能解决你的问题,请参考以下文章

相机预览处于纵向模式,但拍摄的图像已旋转

UIImagePickerController 问题 - iPhone

如何根据设备方向制作横向或纵向照片[重复]

iPhone上的自定义相机工具栏

用前置摄像头拍摄的照片颠倒了

三星galaxy s2总是将相机视图视为风景?