权限
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" />
布局
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取相机图片" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取相册图片" />
Mainactivity
public class MainActivity extends Activity implements OnClickListener {
private ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 0://5.判断请求码
// 6得到拍摄的照片
Bitmap bitMap = data.getParcelableExtra("data");
//7 设置给imageView
image.setImageBitmap(bitMap);
break;
case 1:
//【4】得到图片路径
Uri uri = data.getData();
//【5】设置图片
// image.setImageURI(uri);
startActivityForResult(crop(uri), 2);
break;
case 2:
// 从返回值中直接获取bitmap
Bitmap bmp = (Bitmap) data.getExtras().get(“data”);
image.setImageBitmap(bmp);
break;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
//获取相机
//2。相机的隐式回传意图
Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//3.添加意图
intent.addCategory("android.intent.category.DEFAULT");
//4.回传(注意 请求码必须1001 )
startActivityForResult(intent,0);
break;
case R.id.button2:
//获取相册
//【1】设置相册的意图(权限)
Intent intent1 = new Intent(Intent.ACTION_PICK);
//【2】设置显式MIME数据类型
intent1.setType("image/*");
//【3】跳转回传
startActivityForResult(intent1, 1);
break;
}
}
private Intent crop(Uri uri) {
// 裁剪图片意图
Intent intent = new Intent("com.android.camera.action.CROP");
// 设置裁剪的数据源和数据类型
intent.setDataAndType(uri, "image/*");
// 可裁剪
intent.putExtra("crop", "true");
// 裁剪框的比例,1:1
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// 裁剪后输出图片的尺寸大小
intent.putExtra("outputX", 250);
intent.putExtra("outputY", 250);
// 图片格式
intent.putExtra("outputFormat", "JPEG");
// 必须加,否则返回值中找不到返回的值
intent.putExtra("return-data", true);// 若为true则表示返回数据
return intent;
}
}