图片裁剪:
public class MainActivity extends Activity { public final int START_CAMERA_RESULT = 1; public final int START_PIC_CROP_RESULT = 2; public final int START_CAMERA_PIC_CROP_RESULT = 3; private Uri imageUri; private ImageView pic; private ImageView camera; private Uri imageUri2; private Uri imageUri3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pic = (ImageView) findViewById(R.id.imageView_pic); camera = (ImageView) findViewById(R.id.imageView_camera); // 图片剪裁后保存位置 imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")); // 照片保存位置 imageUri2 = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp2.jpg")); // 照片剪裁后保存位置 imageUri3 = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp3.jpg")); // 图片剪裁 Button picCrop = (Button) findViewById(R.id.btn_pic); picCrop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = imageCrop(null, imageUri, Intent.ACTION_PICK); startActivityForResult(intent, START_PIC_CROP_RESULT); } }); // 启动照相机并把图片剪裁 Button startCamera = (Button) findViewById(R.id.btn_camera); startCamera.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri2); startActivityForResult(intent, START_CAMERA_RESULT); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case START_PIC_CROP_RESULT: setImageView(imageUri, pic); break; case START_CAMERA_RESULT: Intent intent = imageCrop(imageUri2, imageUri3, "com.android.camera.action.CROP"); // 启动裁剪的activity startActivityForResult(intent, START_CAMERA_PIC_CROP_RESULT); break; case START_CAMERA_PIC_CROP_RESULT:// 照片剪裁后处理 Log.i("MainActivity", "START_CAMERA_PIC_CROP_RESULT"); setImageView(imageUri3, camera); break; default: break; } } /** * 图片剪裁函数 * * @param fromUri * @param toUri * @param action * @return */ private Intent imageCrop(Uri fromUri, Uri toUri, String action) { Intent intent = new Intent(); // Intent.ACTION_PICK intent.setAction(action); /** * <data android:mimeType="image/*"/> */ if (fromUri != null) { intent.setDataAndType(fromUri, "image/*"); } else { intent.setType("image/*"); } // 设置参数 intent.putExtra("crop", "true");// getIntent().getStringExtra("crop"); intent.putExtra("aspectX", 2); intent.putExtra("aspectY", 1); // 设置具体长宽 intent.putExtra("outputX", 600); intent.putExtra("outputY", 300); // 设置是否放大缩小 intent.putExtra("scale", true); intent.putExtra("return-data", false); // 设置保存位置 intent.putExtra(MediaStore.EXTRA_OUTPUT, toUri); // Log.i("MainActivity", // "toUri:"+toUri.toString()+"fromUri"+fromUri.toString()); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); return intent; } /** * 根据Uri读取图片并显示 * * @param uri * @param imageView */ private void setImageView(Uri uri, ImageView imageView) { // 读取内容提供者 ContentResolver resovler = getContentResolver(); InputStream is = null; try { is = resovler.openInputStream(uri); Bitmap bm = BitmapFactory.decodeStream(is); imageView.setImageBitmap(bm); Log.i("MainActivity", "set Bitmap"); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } } }