手机拍照:
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; } } }