ExifInterface获取图片旋转(旋转角度获取0)

  发现有小米手机拍照返回以后图片被旋转了,以前测试的小米手机没有出现这个问题,看到这个问题我马上去询问了度娘,

这个问题很多兄弟姐妹都遇到过,所以一下子就知道了解决的办法,获取图片的旋转角度,再进行选择下来,但是这个问题我花了两天才解决,我都不知道进行了多少次,请不要笑我,看我慢慢道来。

  代码如下:、

  //获取图片旋转角度

      public static int readPictureDegree(String path) {  //path 图片路径
        int degree = 0;
        try {
            ExifInterface exifInterface = new ExifInterface(path);
            int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    degree = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    degree = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    degree = 270;
                    break;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return degree;
        }
        return degree;
    }

  //旋转图片

   public static Bitmap rotaingImageView(int degree, Bitmap bitmap) { //angle 旋转的角度  bitmap需要旋转的图片
        Matrix matrix = new Matrix();
        matrix.postRotate(degree);
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
                bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        return resizedBitmap;
    }

  这样就解决了吗?不对,在高版本的时候我们使用ExifInterface会抛出异常,所以我们需要添加ExifInterface依赖:

compile "com.android.support:exifinterface:25.3.1",不使用android自带的ExifInterface了;

  耗时我两天的不是因为这个,因为这个错误网上很多解决方案,我的错误是我自己给自己挖的坑,而且这个坑大家一定不要轻易去踩,没有大牛的提示,真的不容易跑出来。

  我遇到的情况是使用ExifInterface怎么去获取我们的旋转度Orientation都是返回的0,其他的参数亦是;小伙伴们如果你也遇到了这个问题,先检查自己代码,在拍照图片返回的时候是否进行了图片处理,比如说压缩(我就是进行了压缩),因为在压缩图片后,我们的图片属性已经改变,旋转角度默认为了0,所以我们在使用ExifInterface的时候,获取到的就是为0。

 千万注意:获取图片信息的时候,千万不要进行压缩等处理。

  

 

 

你可能感兴趣的:(Android)