gpt4 book ai didi

android - 如何防止 ImageView 中的自动图像旋转?

转载 作者:行者123 更新时间:2023-11-30 00:26:55 26 4
gpt4 key购买 nike

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

问题编号。 1

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

假设.. 如果图像顺时针旋转 180 度,然后 android 将图像重新旋转到 180 度以正确显示图像。我不想要 android 旋转图像。

甚至画廊也按原样显示该图像。设备图库在显示图像时不进行任何类型的操作。

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

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

问题编号。 3

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

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

  1. 如何处理三星设备的旋转?
  2. 如何从从 google drive 中选择的图像中获取旋转值?
  3. 计算旋转图像?
  4. 有什么方法可以让 android 不旋转图像吗?

最佳答案

您正在寻找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;
}

关于android - 如何防止 ImageView 中的自动图像旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45183000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com