android WebView 拍照上传图片兼容


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;
}

你可能感兴趣的:(Android,WebView,WebView)