80,337
社区成员
发帖
与我相关
我的任务
分享
public class MainActivity extends ActionBarActivity {
private static final int TAKE_PHOTE = 0;
private static final int CROP_PHONE = 1;
private Button takePhoto;
private Button chooseFromAlbum;
private ImageView picture;
private Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
takePhoto = (Button) findViewById(R.id.button);
chooseFromAlbum = (Button) findViewById(R.id.button2);
picture = (ImageView) findViewById(R.id.imageViewId);
takePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 创建 File对象,用于存储拍照后的图片
File outputImage = new File(Environment.getExternalStorageDirectory(), "ImageTest.jpg");
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// Uri获取文件资源
imageUri = Uri.fromFile(outputImage);
// 打开相机程序
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
// MediaStore.EXTRA_OUTPUT:用于指示内容解析器 ,imageUri :用于放置图片
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
// 启动相机程序
startActivityForResult(intent, TAKE_PHOTE);
}
});
chooseFromAlbum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 创建 File对象,用于存储拍照后的图片
File outputImage = new File(Environment.getExternalStorageDirectory(), "ImageTest.jpg");
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// Uri获取文件资源
imageUri = Uri.fromFile(outputImage);
// Intent intent = new Intent("android.intent.action.PICK");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
//选择 图片
intent.setType("image/*");
//可裁剪
intent.putExtra("crop", true);
//按比例
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CROP_PHONE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//这里处理的是请求码,即:在拍完后直接跳到剪裁
switch (requestCode) {
case TAKE_PHOTE:
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_PHONE);
}
break;
case CROP_PHONE:
if (resultCode == RESULT_OK) {
try {
//裁剪照片
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
Log.d("图片路径", imageUri + "");
picture.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
}
}
}