Cursor cursor = getContentResolver().query(photoUri, null, null, null,null);String photoPath="";if (cursor != null && cursor.moveToFirst()) {    photoPath = cursor.getString(cursor.getColumnIndexOrThrow            (MediaStore.Images.Media.DATA));    L.i("图片地址:"+photoPath);}if(!"".equals(photoPath)){    // 获取图片旋转的角度    int pictureDegree= BitmapUtils.readPictureDegree(photoPath);    L.i("图片旋转角度:"+pictureDegree);    mUploadMessageForAndroid5.onReceiveValue(new Uri[]{getUri(photoUri, pictureDegree)});}

   
private Uri getUri(Uri uri, int degree) {    Bitmap photoBmp = null;    if (uri != null) {        try {            photoBmp = getBitmapFormUri(this, uri);        } catch (IOException e) {            e.printStackTrace();        }    }    photoBmp = BitmapUtils.rotateBitmapByDegree(photoBmp, degree);    uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), photoBmp, null,            null));    return uri;}

/** * 读取图片属性:旋转的角度 * * @param path 图片绝对路径 * @return degree旋转的角度 */public static int readPictureDegree(String path) {    int degree = 0;    try {        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;}

/** * 将图片按照某个角度进行旋转 * * @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;}

更多相关文章

  1. Android(安卓)改变ImageView图片的Bitmap大小
  2. android 多张图片动画方式轮播(转载)
  3. Android(安卓)Fresco图片处理库用法API英文原文文档3(Facebook开
  4. android 实现无限定时循环viewpager
  5. Android(安卓)自定义文本框(带图片)
  6. Android(安卓)OpenGL之二图像旋转实例
  7. Android(安卓)图片缩放实例详解
  8. Android圆角图片封装类(直接使用)
  9. android旋转图片

随机推荐

  1. SwipeRefreshLayout和CoordinatorLayout
  2. Android 实现与Eclipse数据交互
  3. Android跨应用跳转
  4. Android中button的onClick事件几种方法
  5. Android 关闭多个Activity的实现方法
  6. Android(安卓)系统状态栏一体化实现
  7. Android关于arm64-v8a、armeabi-v7a、arm
  8. 系统音量 android
  9. Android Retrofit源码解析
  10. Android(安卓)gallery 3D效果