1. 程式人生 > >android WebView 拍照上傳圖片相容

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