调用手机摄像头拍照和从图库中选取照片以及得到照片后的备份

来源:互联网 发布:费米估算知乎 编辑:程序博客网 时间:2024/06/10 20:34

手机拍照:

Intent getImageByCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File file = new File(getMediaDir(), System.currentTimeMillis() + ".jpg");//文件不存在,就创建if (!file.exists()) {    try {        file.createNewFile();    } catch (IOException e) {        e.printStackTrace();    }}CurrentPath = file.getAbsolutePath();//获得绝对路径getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));//指定输出路径startActivityForResult(getImageByCamera, CAMERA_SUCCESS);

在图库中选取:

Intent getImage = new Intent(Intent.ACTION_OPEN_DOCUMENT);getImage.addCategory(Intent.CATEGORY_OPENABLE);getImage.setType("image/*");startActivityForResult(getImage, PHOTO_SUCCESS);

getMediaDir:

public File getMediaDir() {//sd卡上创建一个目录    File dir = new File(Environment.getExternalStorageDirectory() + "/TwoNote", "TwoNotes_Image");    if (!dir.exists()) {        dir.mkdirs();    }    return dir;}

OnActivityResult:

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {        ContentResolver resolver = getContentResolver();        if (resultCode == RESULT_OK) {            switch (requestCode) {                case PHOTO_SUCCESS:                    //获得图片的uri                    Uri originalUri = intent.getData();                    Bitmap bitmap = null;                    try {                        Bitmap originalBitmap = BitmapFactory.decodeStream(resolver.openInputStream(originalUri));//把得到的照片保存到单独的文件夹,做备份                   f = new File(getMediaDir(), System.currentTimeMillis() + ".jpg");                        if (!f.exists()) {                            try {                                f.createNewFile();                                FileOutputStream fos = new FileOutputStream(f);                                originalBitmap.compress(Bitmap.CompressFormat.JPEG, 50, fos);                                fos.flush();                                fos.close();                            } catch (IOException e) {                                e.printStackTrace();                            }                        }//对bitmap的操作                                        } catch (FileNotFoundException e) {                        e.printStackTrace();                    }                                                            break;                case CAMERA_SUCCESS:                    File sd = Environment.getExternalStorageDirectory();                    boolean can_write = sd.canWrite();                    Bitmap originalBitmap1 = BitmapFactory.decodeFile(CurrentPath);                    if (originalBitmap1 != null) {                        //对bitmap的操作                       }                    break;                default:                    break;            }        }    }









1 0
原创粉丝点击