혹시 다른 액티비티로 crop한 사진을 놓이게끔 할 수 없나요?
(공지 읽음)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.picturelayout);
callActivityButton = (Button)findViewById(R.id.cameraButton);
image = (ImageView)findViewById(R.id.imageView);
callActivityButton.setOnClickListener(this);
}
cameraButton을 누르면 사진을 찍거나 갤러리에서 사진을 가져온 후 crop을 합니다.
crop을 한 후 버튼이 있던 액티비티에 있는 이미지뷰에 그 사진이 놓여지는데
그 액티비티가 아닌 다른 액티비티에 그 사진을 놓는 방법이 없을까요?
-------------------------
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode != RESULT_OK)
{
return;
}
switch(requestCode)
{
case CROP_FROM_CAMERA:
{
// 크롭이 된 이후의 이미지를 넘겨 받습니다. 이미지뷰에 이미지를 보여준다거나 부가적인 작업 이후에
// 임시 파일을 삭제합니다.
final Bundle extras = data.getExtras();
if(extras != null)
{
Bitmap photo = extras.getParcelable("data");
image.setImageBitmap(photo);
}
/* 임시 파일 삭제
File f = new File(mImageCaptureUri.getPath());
if(f.exists())
{
f.delete();
}*/
break;
}
case PICK_FROM_ALBUM:
{
// 이후의 처리가 카메라와 같으므로 일단 break없이 진행합니다.
// 실제 코드에서는 좀더 합리적인 방법을 선택하시기 바랍니다.
mImageCaptureUri = data.getData();
}
case PICK_FROM_CAMERA:
{
// 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다.
// 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다.
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(mImageCaptureUri, "image/*");
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, CROP_FROM_CAMERA);
break;
}
}
}
크롭한 이미지를 파일로 저장할 수 있을겁니다.
일단 저장하면 파일 경로만 갖고 이동할 수 있기 때문에 인텐트에 실어보내기가 용이해지죠~
이걸 인텐트에 실어서 다른 액티비티로 보내면 되지 않을까요?