zoukankan      html  css  js  c++  java
  • 解决相机拍照不清晰,拍照旋转问题!

    private Uri uri;

    //拍照

    Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); 

    ContentValues values = new ContentValues();  
           values.put(MediaStore.Images.Media.DISPLAY_NAME, String.valueOf(System.currentTimeMillis())+".jpg");  
           values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");  
           uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);  
           getImageByCamera.putExtra(MediaStore.Images.Media.ORIENTATION, 0);  
           getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, uri);

    startActivityForResult(getImageByCamera,REQUEST_CAMERA);

    //获取拍照的图片

    if (requestCode == REQUEST_CAMERA) { //相机获取照片
    String path = Tool.getPathFromUri(context, uri);
    int orientation = Tool.readPictureDegree(path);//获取旋转角度
    AppLog.d("dingdongkai", "orientation==="+orientation);
    if(Math.abs(orientation) > 0){
    Bitmap bit = getBitmapFromUri(uri);
       bitmap =  Tool.rotaingImageView(orientation, bit);//旋转图片  
    }  
    startPhotoZoom(Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null)));

    //根据uri获取图片路径

    public static String getPathFromUri(Context mContext,Uri contentUri){
    AppLog.d("dingdongkai", "contentUri==="+contentUri.toString());
       String[] proj = { MediaStore.Images.Media.DATA };
       CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null);
       Cursor cursor = loader.loadInBackground();
       int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
       cursor.moveToFirst();
       return cursor.getString(column_index);
    }

    //获取图片的旋转角度
    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 uri
     */
    public void startPhotoZoom(Uri uri) {
    // 设置裁剪属性
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, "image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("outputX", 320);
    intent.putExtra("outputY", 320);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, 6);
    }

  • 相关阅读:
    IOC Unity的配置问题
    编译时常量与运行时常量
    Revit二次开发,将插件按钮(Ribbon)变灰或者隐藏
    C#类库读取App.config配置文件
    winform固定窗体大小
    Revit二次开发,获取模型版本信息
    JavaScript:文件保存自動下載函數:Save和SaveAs
    JavaScript:年月日時分秒設置
    JavaScript:字符串の空格刪減和字符刪減功能
    JavaScript:獲取數據の類型
  • 原文地址:https://www.cnblogs.com/xrtd/p/4168820.html
Copyright © 2011-2022 走看看