2

我是安卓新手。我正在尝试制作一个带有照片捕捉功能的应用程序。问题是照片旋转不正确。如果我在横向模式下拍摄照片会很好,但在纵向模式下照片旋转会出错。我的问题是:我可以检查照片是否以横向/纵向模式拍摄吗?因为当我在 LogCat 上查看时,我可以看到名为“CameraEngine”的标签,上面写着旋转:0 或 90。如果我可以通过代码获取这种相机信息,那就太棒了。

4

3 回答 3

5

您可以比较图像的宽度和高度:

Bitmap bmp = your photo;

if(bmp.getWidth() > bmp.getHeight())
{
   // landscape
}else
{
   // portrait
}
于 2012-07-16T12:14:11.247 回答
1

如果照片是使用 PhoneGape 2.9 及更高版本专门拍摄的,则无法在 Android 中签入。

因为您必须从存储在拍摄照片中的EXIF 属性中提取此信息,而 android 甚至不会写出此属性的方向。

您可以参考以下问题的回复以获取更多信息: 画布 drawImage() 与在 iphone 上拍摄的横向照片被旋转

于 2014-01-24T15:42:05.320 回答
0

这应该做你需要的。它以角度 (0/90/180/270) 的形式返回方向:

private int getOrientation(Uri aUri, ContentResolver aRslv) {
    Cursor _cursor = aRslv.query(aUri,
            new String[] { MediaStore.Images.ImageColumns.ORIENTATION },
            null, null, null);

    if (_cursor != null) {
        try {

            if (_cursor.moveToFirst()) {
                return _cursor.getInt(0);
            } else {
                return -1;
            }
        } finally {
            _cursor.close();
        }
    } else {
        return 0;
    }
}
于 2012-07-16T12:17:26.057 回答