ChoosePicTest
第一行代碼的拍照和選擇圖庫照片闻镶,有改動
演示
筆記
點擊拍照
創(chuàng)建file存儲圖片
<pre>
File outImage = new File(Environment.getExternalStorageDirectory(),"tempImg.png");
</pre>根據(jù)之前的路徑,創(chuàng)建一個空文件
<pre>
outImage.createNewFile(); </pre>將file文件轉(zhuǎn)換成Uri—— 形式:file://
<pre>
imageUri = Uri.fromFile(outImage);</pre>啟動相機(jī)
<pre>
//啟動相機(jī)程序
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent,TAKE_PHOTO);
</pre>
或者打開相冊
<pre>
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*"); intent.putExtra("crop",true);
intent.putExtra("scale",true);
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent,SELECT_PHOTO);
</pre>
選擇圖庫相片
1,2,3步驟同上
- 設(shè)置intent
<pre>
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*");
intent.putExtra("crop",true);
intent.putExtra("scale",true); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,SELECT_PHOTO);
</pre>
onActivityResult處理——注意兩處獲取bitmap的方式是不一樣的
拍照和裁剪
switch (requestCode){
case TAKE_PHOTO:
if (resultCode == RESULT_OK){
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(imageUri,"image/*");
intent.putExtra("scale",true);
intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
startActivityForResult(intent,CROP_PHOTO);
}
break;
case CROP_PHOTO:
if (resultCode == RESULT_OK) {
try {
// 把InputStream轉(zhuǎn)換成bitmap
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
//將裁減后的照片顯示出來
mImageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
選擇并顯示
case SELECT_PHOTO:
ContentResolver resolver = getContentResolver();
//照片的原始資源地址
Uri uri = data.getData();
Log.d(TAG, "onActivityResult: "+uri);
try {
Bitmap photo = MediaStore.Images.Media.getBitmap(resolver,uri);
if (photo != null){
mImageView.setImageBitmap(photo);
}
}catch (IOException e){
e.printStackTrace();
}