ExifInterface没有返回正确的方向(三星Galaxy S3)

时间:2014-09-14 02:48:59

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

我试图使用以下方法识别图像的方向:

ExifInterface exif = new ExifInterface(_path);
int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_NORMAL);

我不确定它是否正常工作。这就是为什么: 我在桌子上拍了一张纸的图像"肖像"取向。我的手机在与桌子平行的平面上。但是,手机会保存图像,逆时针旋转90度。

我不知道为什么会这样做,但无论如何,我希望我的 exifOrientation 为6,这样我就可以用它来旋转我的图像:

switch (exifOrientation) {
        case ExifInterface.ORIENTATION_ROTATE_90:
            rotate = 90;
            break;
        ...
        ...
}

但是,我的 exifOrientation 1 且图片无法正确旋转。

我看过: Why does an image captured using camera intent gets rotated on some devices on Android?

甚至尝试过:

private int getImageOrientation(){
final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.ImageColumns.ORIENTATION };
final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        imageColumns, null, null, imageOrderBy);

if(cursor.moveToFirst()){
    int orientation = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION));
    cursor.close();
    return orientation;
} else {
    return 0;
}
}

重申一下,我试图找出正确的方向。

0 个答案:

没有答案