如何在Android中检查照片是以横向还是纵向模式拍摄的?

时间:2012-07-16 12:09:58

标签: android android-camera android-camera-intent

我是Android的新手。我正在尝试使用内部的照片捕捉功能制作应用程序。问题是照片旋转不对。如果我以横向模式拍摄照片会很好,但在纵向模式下照片旋转会出错。我的问题是:我可以检查照片是否以横向/纵向模式拍摄?因为当我检查LogCat时,我可以看到名为“CameraEngine”的标签,它表示旋转:0或90.如果我可以通过代码获得那种相机信息,那将会很酷。

3 个答案:

答案 0 :(得分:5)

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

Bitmap bmp = your photo;

if(bmp.getWidth() > bmp.getHeight())
{
   // landscape
}else
{
   // portrait
}

答案 1 :(得分:1)

如果照片是专门使用PhoneGape 2.9及更高版本拍摄的,那么您无法检查Android。

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

您可以参考此回复此问题以获取更多信息: canvas drawImage() with photos taken on iphone in landscape are rotated

答案 2 :(得分: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;
    }
}