android 图片裁剪

来源:互联网 发布:javascript:void(0); 编辑:程序博客网 时间:2024/04/28 15:32




public class MainActivity extends Activity {//dataprivate static final String TAG = "MainActivity";private static final int TAKE_BIG_PICTURE = 1;private static final int TAKE_SMALL_PICTURE = 2;private static final int CROP_BIG_PICTURE = 3;private static final int CROP_SMALL_PICTURE = 4;private static final int CHOOSE_BIG_PICTURE = 5;private static final int CHOOSE_SMALL_PICTURE = 6;private static final String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";private Uri imageUri;//to store the big bitmap//viewsprivate ImageView imageView;private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode){Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");intent.putExtra("aspectX", 2);intent.putExtra("aspectY", 1);intent.putExtra("outputX", outputX);intent.putExtra("outputY", outputY);intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);intent.putExtra("return-data", false);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());intent.putExtra("noFaceDetection", true); // no face detectionstartActivityForResult(intent, requestCode);}private Bitmap decodeUriAsBitmap(Uri uri){Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));} catch (FileNotFoundException e) {e.printStackTrace();return null;}return bitmap;}/** Handle click events */public void onClick(View v){Intent intent = null;switch (v.getId()) {case R.id.buttonTakeBigPicture:if(imageUri == null)Log.e(TAG, "image uri can't be null");//capture a big bitmap and store it in Uriintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is captureintent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, TAKE_BIG_PICTURE);break;case R.id.buttonTakeSmallPicture:intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is captureintent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, TAKE_SMALL_PICTURE);break;case R.id.buttonChooseBigPicture:intent = new Intent(Intent.ACTION_GET_CONTENT, null);intent.setType("image/*");intent.putExtra("crop", "true");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, imageUri);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());intent.putExtra("noFaceDetection", false); // no face detectionstartActivityForResult(intent, CHOOSE_BIG_PICTURE);break;case R.id.buttonChooseSmallPicture:intent = new Intent(Intent.ACTION_GET_CONTENT, null);intent.setType("image/*");intent.putExtra("crop", "true");intent.putExtra("aspectX", 2);intent.putExtra("aspectY", 1);intent.putExtra("outputX", 200);intent.putExtra("outputY", 100);intent.putExtra("scale", true);intent.putExtra("return-data", true);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());intent.putExtra("noFaceDetection", true); // no face detectionstartActivityForResult(intent, CHOOSE_SMALL_PICTURE);break;default:break;}}/** Activity life cycle */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//viewsimageView = (ImageView) findViewById(R.id.imageView);//instantiateimageUri = Uri.parse(IMAGE_FILE_LOCATION);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(resultCode != Activity.RESULT_OK){//result is not correctLog.e(TAG, "requestCode = " + requestCode);Log.e(TAG, "resultCode = " + resultCode);Log.e(TAG, "data = " + data);return;}else{switch (requestCode) {case TAKE_BIG_PICTURE:Log.d(TAG, "TAKE_BIG_PICTURE: data = " + data);//it seems to be null//TODO sent to cropcropImageUri(imageUri, 780, 600, CROP_BIG_PICTURE);//or decode as bitmap and display it// if(imageUri != null){// Bitmap bitmap = decodeUriAsBitmap(imageUri);// imageView.setImageBitmap(bitmap);// }break;case CROP_BIG_PICTURE://from crop_big_pictureLog.d(TAG, "CROP_BIG_PICTURE: data = " + data);//it seems to be nullif(imageUri != null){Bitmap bitmap = decodeUriAsBitmap(imageUri);imageView.setImageBitmap(bitmap);}break;case TAKE_SMALL_PICTURE:Log.i(TAG, "TAKE_SMALL_PICTURE: data = " + data);//TODO sent to cropcropImageUri(imageUri, 260, 200, CROP_SMALL_PICTURE);//or decode as bitmap and display it// if(imageUri != null){// Bitmap bitmap = decodeUriAsBitmap(imageUri);// imageView.setImageBitmap(bitmap);// }break;case CROP_SMALL_PICTURE:if(imageUri != null){Bitmap bitmap = decodeUriAsBitmap(imageUri);imageView.setImageBitmap(bitmap);}else{Log.e(TAG, "CROP_SMALL_PICTURE: data = " + data);}break;case CHOOSE_BIG_PICTURE:Log.d(TAG, "CHOOSE_BIG_PICTURE: data = " + data);//it seems to be nullif(imageUri != null){Bitmap bitmap = decodeUriAsBitmap(imageUri);imageView.setImageBitmap(bitmap);}break;case CHOOSE_SMALL_PICTURE:if(data != null){Bitmap bitmap = data.getParcelableExtra("data");imageView.setImageBitmap(bitmap);}else{Log.e(TAG, "CHOOSE_SMALL_PICTURE: data = " + data);}break;default:break;}}}}

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com



0 0
原创粉丝点击