【问题标题】:How to prevent auto image rotatation in imageview?如何防止图像视图中的自动图像旋转?
【发布时间】:2017-07-19 15:22:02
【问题描述】:

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

期号。 1

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

让我们说.. 如果图像被旋转到 180 度 CW 然后 android 将图像重新旋转到 180 度以正确显示图像。我不想要 android 旋转图像。

即使是画廊也能按原样显示该图像。设备库在显示图像时没有进行任何形式的操作。

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

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

期号。 3

但是当用户从谷歌驱动器中选择图像时,我将没有所选图像的元数据。所以如果没有它,我怎么能决定图像应该旋转到这个程度。

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

  1. 如何处理三星设备的旋转?
  2. 如何从谷歌驱动器选择的图像中获取旋转值?
  3. 计算旋转图像?
  4. 有什么办法说 android 不旋转图像?

【问题讨论】:

标签: android android-imageview google-drive-android-api image-rotation autorotate


【解决方案1】:

您正在寻找 ExifInterface 。有支持版本和很好的描述link

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

            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;
            } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多