【问题标题】:Why is my image being displayed sidewards?为什么我的图像是横向显示的?
【发布时间】:2020-10-04 16:46:44
【问题描述】:

我正在关注 Youtube 上关于如何在不损失图像质量的情况下从相机拍照的教程

https://www.youtube.com/watch?v=CYRXXOM3aGI

一切都按预期工作,但最后的结果显示错误地向左旋转,无论我做什么,我都无法修复它。我在 youtube cmets 上看到一个人说他有同样的问题,但他的方法没有解决我的问题。我在 Android Studio 中找不到区域或功能来改变屏幕上显示的结果的旋转。

[活动后在屏幕上显示结果][1].

对不起,如果我不够清楚。我刚开始在 Android Studio 中是一个不错的 Java 开发人员。我的问题是,是否有一个函数可以用来旋转新拍摄和显示的位图图像的所需输出。

[1]: https://i.stack.imgur.com/l9nqS.png![ 图像树意味着向上而不是侧向](https://i.stack.imgur.com/qvKXh.jpg)

【问题讨论】:

  • snipboard.io/UE5xRW.jpg本来就是这样的,只是我显示的图片向左旋转了90度。
  • 向左旋转是什么意思?
  • 我编辑了我的帖子并添加了另一张图片来突出我的问题。我用树的应用程序拍了一张照片。现在树向左旋转

标签: android android-studio android-layout bitmap


【解决方案1】:

您设备的相机似乎正在对输出照片应用 EXIF 旋转角度,而不是旋转实际的图像像素,这是有效的,许多设备都会这样做。

Bitmapfactory 类根本不执行任何类型的EXIF 旋转/转换。您需要自己执行它们。

使用ExifInterface 类获取轮播信息。您应该使用 AndroidX 变体而不是已弃用的框架之一。

所以你要做的就是获取图片的EXIF,如果在TAG_ORIENTATION中找到ORIENTATION_NORMAL以外的值,那么你必须按照EXIF 角度。此操作需要创建一个新的位图,因此为了避免潜在的OutOfMemoryError,请使用此link 中提供的一些提示。

另一种更简单的选择,就是获取EXIF角度,并根据这个角度对ImageView应用一个图像旋转矩阵,所以不需要修改图像文件一点也不。请注意,ImageView 有一个matrix scale type,可以在这种情况下使用。

【讨论】:

  • 谢谢,这是一个非常详细的答案。超出了我的预期。我现在只需要去学习所有这些东西,哈哈,你给了我一些功课
【解决方案2】:

我采取了简单的方法,只是做了以下

        imageView.setRotation(90);

所以现在图像可以正确显示。我知道这可能会给我带来麻烦,但这是菜鸟的梦想。

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2023-03-23
    • 2015-05-04
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多