android 选择图片或拍照时旋转了90度问题

由于前面的博文中忽略了点内容,所以在这里补上,下面内容就是解决拍照或者选择图片显示的时候图片旋转了90度或者其他度数问题,以便照片可以正面显示:具体如下:

首先直接看上面博文下的拍完照或者选完图后处理部分:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        switch (resultCode) {
        case 1:
            if (data != null) {
                // 取得返回的Uri,基本上选择照片的时候返回的是以Uri形式,但是在拍照中有得机子呢Uri是空的,所以要特别注意
                Uri mImageCaptureUri = data.getData();
                // 返回的Uri不为空时,那么图片信息数据都会在Uri中获得。如果为空,那么我们就进行下面的方式获取
                if (mImageCaptureUri != null) {
                    setImage(mImageCaptureUri);// 根据Uri处理并显示图片
                }
            }
            break;
        default:
            break;

        }
    }

第二:处理90度问题并显示:

    private void setImage(Uri mImageCaptureUri) {

        // 不管是拍照还是选择图片每张图片都有在数据中存储也存储有对应旋转角度orientation值
        // 所以我们在取出图片是把角度值取出以便能正确的显示图片,没有旋转时的效果观看

        ContentResolver cr = this.getContentResolver();
        Cursor cursor = cr.query(mImageCaptureUri, null, null, null, null);// 根据Uri从数据库中找
        if (cursor != null) {
            cursor.moveToFirst();// 把游标移动到首位,因为这里的Uri是包含ID的所以是唯一的不需要循环找指向第一个就是了
            String filePath = cursor.getString(cursor.getColumnIndex("_data"));// 获取图片路径
            String orientation = cursor.getString(cursor
                    .getColumnIndex("orientation"));// 获取旋转的角度
            cursor.close();
            if (filePath != null) {
                Bitmap bitmap = BitmapFactory.decodeFile(filePath);//根据Path读取资源图片
                int angle = 0;
                if (orientation != null && !"".equals(orientation)) {
                    angle = Integer.parseInt(orientation);
                }
                if (angle != 0) {
                    // 下面的方法主要作用是把图片转一个角度,也可以放大缩小等
                    Matrix m = new Matrix();
                    int width = bitmap.getWidth();
                    int height = bitmap.getHeight();
                    m.setRotate(angle); // 旋转angle度
                    bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,
                            m, true);// 从新生成图片

                }
                photo.setImageBitmap(bitmap);
            }
        }
    }
时间: 2024-10-22 02:52:17

android 选择图片或拍照时旋转了90度问题的相关文章

android选择图片或拍照图片上传到服务器(包括上传参数)

From:http://blog.csdn.net/springsky_/article/details/8213898具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java] view plaincopy package com.spring.sky.image.upload; import java.util.HashMap; import java.util.Map; import android.app.Activity; import android.app.

android 选择图片 剪裁 拍照 兼容所有版本的代码

前言,版本兼容问题主要是由于4.4以前和4.4以后的Uri的格式不同所造成的错误 资料 Android 4.4从图库选择图片,获取图片路径并裁剪 1.拍照 和选择图片 ①选择图片 1 intent = new Intent(Intent.ACTION_GET_CONTENT); 2 intent.setType("image/*"); 3 startActivityForResult(intent, GALLERY_REQUEST_CODE);   ②拍照 1 intent = new

Android 从图库选择图片,拍照图片,裁剪图片

我直接写代码了 1先来几个常亮 private static final int PHOTO_REQUEST_CAREMA = 1;// 拍照private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择private static final int PHOTO_REQUEST_CUT = 3;// 结果private static final String PHOTO_FILE_NAME = "temp_photo.jpg"

android 选择图片拍照并剪切照片上传到服务器

界面调用方法: pickerPicture 和 pickerPictureOk 为父类方法, 父类方法中调用上传,界面中只需要处理这两个方法即可; 父类中处理打开照片,选择完成 和上传到服务器 调用 上传完成通知界面 选择图片并剪切,4.4的手机不同于其他 package com.idonoo.shareCar.ui.commom.activitys; import java.io.File; import android.app.Activity; import android.content

第三讲 ------- 从系统中选择图片(拍照或从相册中取)

从系统中取图片这个是写安卓非常常见的一个功能,但是很多时候我们每次我们都去写一个还是比较麻烦的. 下面我就介绍我写的一个已经封装好的一个类,先看截图 从截图上看,功能很清晰,点击获取图片按钮,出来一个半透明的界面,具有用相机拍照获取图片和从相册中选择两种途径去获取图片. 看完截图直接上代码 package com.yixuan; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutput

Android 选择图片

利用intent进入到选择图片的Android内置activity中 Intent intent = new Intent(); /* 开启Pictures画面Type设定为image */ intent.setType("image/*"); /* 使用Intent.ACTION_GET_CONTENT这个Action */ intent.setAction(Intent.ACTION_GET_CONTENT); /* 取得相片后返回本画面 */ startActivityForRe

矩阵的旋转(90度)输出:

对于一个给定的 3\times 33×3 矩阵,请将其顺时针旋转 90度后输出. 输入格式 每次程序运行时,你的程序仅需要输入三行,第 i行输入三个整数 a_i, b_i, c_i,任意两个整数之间用一个空格分开. 输出格式 输出为三行,每行包括三个整数,与题目要求的一致(从直观上看,输出的结果应为输入的矩阵旋转 90度后的结果),每行的任意两个整数之间用一个空格分开,最后一个整数后面没有空格. 样例输入 1 2 3 3 4 6 7 8 9 样例输出 7 3 1 8 4 2 9 6 3 1 #i

android 之 webView 显示h5 执行选择图片或者拍照功能

开发工具是 android studio SDK版本是 4.3实现过程基本是这样h5中调用手机选择文件图片的代码是: <input accept="image/*" capture="camera" id="imgFile" name="imgFile" type="file"> 然后给webView 设置WebChromeClient WebChromeClient 主要处理解析,渲染网页等浏

朝花夕拾-android 从手机选择图片或拍照设置头像

Demo源码位置:http://git.oschina.net/zj2012zy/Android-Demo/tree/master/AndroidDemo/headset 一般需要用户信息的好多的也需要设置用户头像,通常设置用户头像的操纵要么从手机选择一张图片,要么直接通过手机拍照进行设置.示意图如下: 另外:制作手机的动态截屏,可以使用应用宝的动态截屏功能,非常的方便. 布局文件很简单:就是两个按钮加一个imageview用来显示设置好的头像,就不说了. 核心代码为如下四个函数: 1.选择一张