Android 获取图片角度并矫正至0

	/**
	 * 根据图片路径获取需要矫正的角度
	 * @param filepath 图片路径
	 * @return 需矫正的角度
	 */
	public static int getExifOrientation(String filepath) {
        int degrees = 0;
        ExifInterface exif = null;
        try {
            exif = new ExifInterface(filepath);
        } catch (IOException e) {
            Log.d(TAG, "cannot read exif" + e);
        }
        if (exif != null) {
            int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);
            if (orientation != -1) {
                switch (orientation) {
                    case ExifInterface.ORIENTATION_ROTATE_90:
                        degrees = 90;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                        degrees = 180;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                        degrees = 270;
                        break;
                }
            }
        }
        return degrees;
	}

以上代码摘自 https://blog.csdn.net/weixin_30698775/article/details/117493107

		//获取矫正前图片
		Bitmap bitmap = BitmapFactory.decodeFile(imgPath)
		//获取矫正角度
        int degrees = getExifOrientation(imgPath);
        if (degrees != 0) {
			//矫正图片
            Matrix matrix = new Matrix();
            matrix.postRotate(degrees);
            Bitmap bitmap1 = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
			//设置矫正后图片到View
			cropImageView.setImageBitmap(bitmap1);
        }else {
			//设置矫正前图片到View
            cropImageView.setImageBitmap(bitmap);
        }
posted @ 2022-04-24 15:45  指切  阅读(423)  评论(0编辑  收藏  举报