美文网首页
Android 关于相机拍照生成bitmap方向不对,适配And

Android 关于相机拍照生成bitmap方向不对,适配And

作者: wenju | 来源:发表于2021-04-26 15:51 被阅读0次
         //获取旋转角度
        public int getRotationAmount(Uri imageUri) {
            try {
                String rotationAmount = null;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                    rotationAmount = new ExifInterface(getContentResolver().openInputStream(imageUri)).getAttribute(ExifInterface.TAG_ORIENTATION);
                }else{
                    ExifInterface exifInterface = new ExifInterface(getPath(this,imageUri));
                    rotationAmount = String.valueOf(exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL));
                }
                if (TextUtils.isEmpty(rotationAmount)) {
                    return 0;
                }
                switch (Integer.parseInt(rotationAmount)) {
                    case 3:
                        return 180;
                    case 6:
                        return 90;
                    case 8:
                        return 270;
                    default:
                        return 0;
                }
            } catch (Exception e) {
                return 0;
            }
        }
    
        //获取path
        private String getPath(Context context, Uri uri) {
            String path = null;
            Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
            if (cursor == null) {
                return null;
            }
            if (cursor.moveToFirst()) {
                try {
                    path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            cursor.close();
            return path;
        }
    
    
        // 旋转照片
        public static Bitmap rotateBitmap(Bitmap bitmap, int degress) {
            if (bitmap != null) {
                Matrix m = new Matrix();
                m.postRotate(degress);
                bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);
                return bitmap;
            }
            return bitmap;
        }
    

    相关文章

      网友评论

          本文标题:Android 关于相机拍照生成bitmap方向不对,适配And

          本文链接:https://www.haomeiwen.com/subject/eejerltx.html