`
喧嚣求静
  • 浏览: 573634 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

部分Android手机拍照后照片被旋转的解决方案-转

 
阅读更多

在部分Android手机(如MT788、Note2)上,使用Camera拍照以后,得到的照片会被自动旋转(90°、180°、270°),这个情况很不符合预期。仔细分析了一下,因为照片属性中是存储了旋转信息的,所以要解决这个问题,可以在onActivityResult方法中,获取到照片数据后,读取它的旋转信息,如果不是0,说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可。

1、读取图片的旋转属性

/**
 * 读取图片的旋转的角度
 *
 * @param path
 *            图片绝对路径
 * @return 图片的旋转角度
 */
private int getBitmapDegree(String path) {
    int degree = 0;
    try {
        // 从指定路径下读取图片,并获取其EXIF信息
        ExifInterface exifInterface = new ExifInterface(path);
        // 获取图片的旋转信息
        int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_NORMAL);
        switch (orientation) {
        case ExifInterface.ORIENTATION_ROTATE_90:
            degree = 90;
            break;
        case ExifInterface.ORIENTATION_ROTATE_180:
            degree = 180;
            break;
        case ExifInterface.ORIENTATION_ROTATE_270:
            degree = 270;
            break;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return degree;
}

 2、将图片按照某个角度进行旋转

/**
 * 将图片按照某个角度进行旋转
 *
 * @param bm
 *            需要旋转的图片
 * @param degree
 *            旋转角度
 * @return 旋转后的图片
 */
public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {
    Bitmap returnBm = null;
  
    // 根据旋转角度,生成旋转矩阵
    Matrix matrix = new Matrix();
    matrix.postRotate(degree);
    try {
        // 将原始图片按照旋转矩阵进行旋转,并得到新的图片
        returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
    } catch (OutOfMemoryError e) {
    }
    if (returnBm == null) {
        returnBm = bm;
    }
    if (bm != returnBm) {
        bm.recycle();
    }
    return returnBm;
}

 

分享到:
评论

相关推荐

    完美解决Android三星手机从图库选择照片旋转问题

    在Android开发中,遇到特定设备如三星手机从图库选择照片时出现图片旋转的问题是一个常见的困扰。这个问题主要是由于相机拍摄的图片包含了EXIF(Exchangeable Image File Format)信息,其中记录了拍摄时的元数据,...

    解决android有的手机拍照后上传图片被旋转的问题

    本文将详细介绍两种解决Android手机拍照后上传图片被旋转问题的方法。 首先,我们来看第一种解决方式。这种方式是在用户拍照完成后,通过启动一个新的活动(Activity)让用户手动选择图片的旋转方向。在`...

    Android拍照问题解决

    ### Android拍照问题解决 #### 知识点一:Android不同版本中的权限管理变化 在不同的Android版本中,系统对应用权限的管理有着显著的变化。这些变化主要体现在Android 4.0(Ice Cream Sandwich)、5.0(Lollipop)...

    Android裁剪图片终极解决方案

    本文将深入探讨如何实现Android大图片裁剪的终极解决方案,结合提供的资源包`CropImage-Enhance`,我们将涵盖以下几个关键知识点: 1. **Bitmap的加载与内存管理** - Android中的Bitmap对象占用大量内存,处理不当...

    android使用usb外接摄像头拍照并保存照片

    这个"android使用usb外接摄像头拍照并保存照片"的示例项目,旨在解决这个问题,提供了一个完整的解决方案,涵盖了从连接摄像头到捕获图像再到本地存储的全过程。 首先,我们需要了解Android对USB设备的支持。...

    Android-一款用于在Android设备上获取照片

    在Android应用开发中,处理图片是常见的需求,无论是用户拍照、从相册选取还是从文件系统中选择图片,都需要一套完整的解决方案。"Android-一款用于在Android设备上获取照片"所描述的开源工具库正是针对这一需求而...

    安卓Android源码——手机拍照.rar

    在安卓(Android)平台上,开发手机拍照功能是移动应用开发中的常见任务。这份"安卓Android源码——手机拍照.rar"的资源可能包含了实现这一功能的源代码,这对于开发者来说是宝贵的参考资料。源码分析和学习可以帮助...

    android ocr解决方案

    综上所述,Android OCR解决方案涉及图像捕获、预处理、识别、结果处理等多个环节,开发者需要熟悉Android开发、图像处理以及OCR原理,才能构建出高效且准确的OCR应用。这个提供的代码示例应包含上述部分的实现,有助...

    Android应用源码之PicCutDemo(拍照取图)-IT计算机-毕业设计.zip

    此外,论文部分可能涵盖了项目的设计理念、实现方法、技术难点以及解决方案。这有助于读者理解开发者的思考过程和技术选型,同时也为其他开发者提供了参考和启示。 总的来说,PicCutDemo是一个集成了Android Camera...

    非常好用的anroid拍照或者照片裁剪代码

    总结来说,这个"非常好用的Android拍照或者照片裁剪代码"可能是针对Android平台的一个优化裁剪库,提供了一套完整的解决方案,包括拍照、图片处理、用户交互和兼容性,以应对各种设备和场景下的照片裁剪需求。...

    相册裁剪框架学习ArthurHub/Android-Image-Cropper

    总的来说,ArthurHub/Android-Image-Cropper是一款功能强大、易于使用的Android图片裁剪框架,它为开发者提供了一个快速实现图片裁剪功能的解决方案。通过深入理解和灵活运用这个框架,开发者可以省去大量重复工作,...

    Android-Android仿微信的图片选择器带裁剪功能支持圆形和方形裁剪

    "Android-Android仿微信的图片选择器带裁剪功能支持圆形和方形裁剪"这个项目就是这样一个实现,它为开发者提供了完整的解决方案。 首先,我们来探讨一下该项目的核心知识点: 1. **自定义相册**: 在Android中,...

    Android 自定义相机拍照和录像

    本项目针对这一主题提供了完整的解决方案,并已转化为Android Studio项目,方便开发者直接导入和使用。 首先,自定义相机涉及到的主要知识点有: 1. **Camera API**:Android 提供了Camera API用于访问和控制设备...

    Android中关于自定义相机预览界面拉伸问题

    本文将深入探讨这个问题,并提供解决方案。 首先,理解问题的根本原因至关重要。当我们在Android应用中使用Camera API创建自定义相机预览时,可能会遇到图像变形或拉伸的问题。这主要是由于两个因素: 1. 摄像头...

    Android-Camera-Example

    `CameraX`提供了一种更好的兼容性解决方案,因为它在底层处理了很多设备差异。 8. **最佳实践**: 使用`CameraX`库可以遵循现代Android开发的最佳实践,包括使用LiveData和Room等Jetpack组件,以及遵循Kotlin协程...

    Project-AndroidStudio.rar

    这些功能的集成,使得"Project-AndroidStudio"成为一个功能完备的移动摄影解决方案,无论是在日常生活中记录美好瞬间,还是在社交媒体上分享个性化的照片,都能满足用户的需求。 总的来说,"Project-AndroidStudio...

    android 摄像头、视频录制demo (竖屏)

    综上所述,这个示例项目提供了在竖屏模式下正确显示和处理摄像头预览、拍照和视频录制的解决方案,同时确保在PC端查看时保持预期的方向。开发者可以通过分析解压后的“zdyCamera”文件,学习和理解上述各个步骤的...

    Android如何调用系统现有的照相机拍照与摄像

    如果存在这样的应用,`startActivityForResult()`会被调用,这样当用户完成拍照后,控制权会返回到我们的应用,并触发`onActivityResult()`方法。 对于录制视频,我们需要创建一个ACTION_VIDEO_CAPTURE的Intent: ...

    Android手机摄像头实现长度测量.ppt

    《Android手机摄像头实现长度...总结来说,利用Android手机摄像头实现长度测量是计算机视觉技术在移动设备上的创新应用,结合射影几何和对极几何的理论,可以实现非接触式的长度测量,提供了一种高效、实用的解决方案。

    android Camera源码(可用)

    5. **常见问题与解决方案** - **权限问题**:确保在AndroidManifest.xml中添加`<uses-permission android:name="android.permission.CAMERA" />`。 - **旋转和翻转**:处理预览和捕获图像的设备方向,可能需要调整...

Global site tag (gtag.js) - Google Analytics