Android 如何在imageview中防止图像自动旋转?

Android 如何在imageview中防止图像自动旋转?,android,android-imageview,google-drive-android-api,image-rotation,autorotate,Android,Android Imageview,Google Drive Android Api,Image Rotation,Autorotate,我正在努力将图像自动旋转到图像视图中 第1期 根据我的观察,如果图像旋转到任何角度,那么在将图像显示到imageview时,android会按照旋转角度旋转该图像 让我们说。。若图像顺时针旋转180度,则android会将图像重新旋转180度以正确显示图像。我不想要android旋转图像 甚至连展示这张照片的画廊也不例外。设备库在显示图像时未进行任何类型的操作 第二期 三星设备的另一个问题。三星默认捕捉角度为横向。意味着如果我在横向模式下拍摄任何照片,图像旋转将为0。但若我在纵向模式下拍摄图像,

我正在努力将图像自动旋转到图像视图中

第1期

根据我的观察,如果图像旋转到任何角度,那么在将图像显示到imageview时,android会按照旋转角度旋转该图像

让我们说。。若图像顺时针旋转180度,则android会将图像重新旋转180度以正确显示图像。我不想要android旋转图像

甚至连展示这张照片的画廊也不例外。设备库在显示图像时未进行任何类型的操作

第二期 三星设备的另一个问题。三星默认捕捉角度为横向。意味着如果我在横向模式下拍摄任何照片,图像旋转将为0。但若我在纵向模式下拍摄图像,图像旋转值将为90。问题从这里开始。现在,如果尝试显示该肖像图像,android图像视图将该图像旋转90度。因此,图像将水平显示,而不是垂直显示

作为解决方案,我可以从图像中读取旋转度,并在显示之前进行计算

第3期

但当用户从GoogleDrive中选择图像时,我将不会有所选图像的元数据。所以如果没有它,我怎么能决定图像应该旋转到这么大的程度呢

我期待以下问题的解决方案

  • 如何处理三星设备的旋转
  • 如何从谷歌硬盘选择的图像中获取旋转值
  • 旋转图像的计算
  • 有没有办法说android不旋转图像
  • 你在找我。有一个支持版本和一个很好的描述

    我不确定是否有任何方法可以避免自动旋转,但下面是用于检测图像旋转并设置正确旋转的示例代码。希望这有帮助

                ExifInterface exif = new ExifInterface(path);
                int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
                Matrix matrix = new Matrix();
                switch (orientation) {
                    case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
                        matrix.setScale(-1, 1);
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                        matrix.setRotate(180);
                        break;
                    case ExifInterface.ORIENTATION_FLIP_VERTICAL:
                        matrix.setRotate(180);
                        matrix.postScale(-1, 1);
                        break;
                    case ExifInterface.ORIENTATION_TRANSPOSE:
                        matrix.setRotate(90);
                        matrix.postScale(-1, 1);
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_90:
                        matrix.setRotate(90);
                        break;
                    case ExifInterface.ORIENTATION_TRANSVERSE:
                        matrix.setRotate(-90);
                        matrix.postScale(-1, 1);
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                        matrix.setRotate(-90);
                        break;
                } 
    

    参考此链接,您将找到您的解决方案: