이미지를 앨범에서 불러와서 정사각형이 아닌 자유자제로 crop 을 하려는데
앨범 들어오는 것 까지는 되는데 선택을 하면 에러가 나네요...
cameraActivity.java
switch(requestCode)
{
case CROP_FROM_CAMERA:
{
final Bundle extras = data.getExtras();
File f = new File(mImageCaptureUri.getPath());
if(f.exists())
{
f.delete();
}
break;
}
case PICK_FROM_ALBUM:
{
mImageCaptureUri = data.getData();
}
case PICK_FROM_CAMERA:
{
//Intent intent = new Intent("com.android.camera.action.CROP");
Intent intent = new Intent("org.androidtown.mix.CropActivity");
intent.setDataAndType(mImageCaptureUri, "image/*");
Bundle extras = getIntent().getExtras();
if (extras != null) {
crop = extras.getBoolean("crop");
}
int widthOfscreen = 0;
int heightOfScreen = 0;
DisplayMetrics dm = new DisplayMetrics();
try {
getWindowManager().getDefaultDisplay().getMetrics(dm);
} catch (Exception ex) {
}
widthOfscreen = dm.widthPixels;
heightOfScreen = dm.heightPixels;
compositeImageView = (ImageView) findViewById(R.id.image);
//Bitmap
photo = extras.getParcelable("data");
mPhotoImageView.setImageBitmap(photo);
//Bitmap photo = extras.getParcelable("data");
//CameraActivity.mPhotoImageView.setImageBitmap(photo);
Bitmap resultingImage = Bitmap.createBitmap(widthOfscreen,
heightOfScreen, bitmap.getConfig());
Canvas canvas = new Canvas(resultingImage);
Paint paint = new Paint();
paint.setAntiAlias(true);
Path path = new Path();
for (int i = 0; i < SomeView.points.size(); i++) {
path.lineTo(SomeView.points.get(i).x, SomeView.points.get(i).y);
}
canvas.drawPath(path, paint);
if (crop) {
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
} else {
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
}
canvas.drawBitmap(bitmap, 0, 0, paint);
compositeImageView.setImageBitmap(resultingImage);
/*
intent.putExtra("outputX", 90);
intent.putExtra("outputY", 90);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);*/
startActivityForResult(getIntent(), CROP_FROM_CAMERA);
break;
}
}
}