소스가 지금 이렇게 짜져잇습니다 어느부분에 원 크롭을 짜야하고 어떤식으로하는지 도움을 주셨으면 좋겠습니다. 보고 열심히 분석하겠습니다.
public class Photo extends Activity implements OnClickListener {
private static final int PICK_FROM_CAMERA = 0;
private static final int PICK_FROM_ALBUM = 1;
private static final int CROP_FROM_CAMERA = 2;
private Uri mImageCaptureUri;
private ImageView mPhotoImageView, img;
private Bitmap photo;
// private Button mButton;
String mImageUri;
private String dataUri;
private Context mContext;
private Button btn1;
private Button btn2;
private Button btn3;
private String mSaveCropPhotePath;
private Bitmap bmThumbnail;
private String byteArray;
private Bitmap bm;
private String kk;
private Uri picUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo);
mContext = this;
mPhotoImageView = (ImageView) findViewById(R.id.image);
btn1 = (Button) findViewById(R.id.button);
btn1.setOnClickListener(this);
btn2 = (Button) findViewById(R.id.back);
btn2.setOnClickListener(this);
btn3 = (Button) findViewById(R.id.next);
btn3.setOnClickListener(this);
// byte[] arr = getIntent().getByteArrayExtra("image");
// Bitmap bm = BitmapFactory.decodeByteArray(arr, 0, arr.length);
System.gc();
Intent i = getIntent();
Bundle extras = i.getExtras();
kk = extras.getString("asdf");
Log.e("kk", kk);
}
/**
* 앨범에서 이미지 가져오기
*/
private void doTakePhotoAction() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 임시로 사용할 파일의 경로를 생성
String url = "DCIM/AT" + String.valueOf(System.currentTimeMillis())
+ ".jpg";
mImageCaptureUri = Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), url));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
mImageCaptureUri);
intent.putExtra("return-data", true);
startActivityForResult(intent, PICK_FROM_CAMERA);
}
/**
* to get Image from album
*/
private void doTakeAlbumAction() {
// 앨범 호출
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
startActivityForResult(intent, PICK_FROM_ALBUM);
}
@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");
ByteArrayOutputStream os = new ByteArrayOutputStream();
photo.compress(CompressFormat.JPEG, 100, os);
byte[] bin = os.toByteArray();
Log.i("lkm",
"onActivityResult ======= mPhotoImageView , data : "
+ data.getDataString());
if (photo == null) {
} else {
// String[] mFile = targetUrl.split("/");
String mFileName = String.valueOf(System
.currentTimeMillis()) + ".jpg";
String savePath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/" + mFileName;
FileOutputStream fos = null;
File f = new File(savePath);
if (f.exists()) {
// Log.i("lkm","파일 잇어서 비트맵 저장안함");
Toast.makeText(mContext, "파일이 존재합니다",
Toast.LENGTH_SHORT).show();
} else {
try {
Log.i("lkm", "파일 없어서 비트맵 저장시작");
fos = new FileOutputStream(savePath);
photo.compress(CompressFormat.JPEG, 100, fos);
Log.i("lkm", "파일 없어서 비트맵 저장");
Toast.makeText(mContext, "저장되었습니다.",
Toast.LENGTH_SHORT).show();
mContext.sendBroadcast(new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri
.parse("file://" + savePath)));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("lkm", "파일 없어서 비트맵 저장실패");
} finally {
try {
fos.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
mSaveCropPhotePath = savePath;
}
mPhotoImageView.setImageBitmap(photo);
}
// 임시 파일 삭제
File f = new File(mImageCaptureUri.getPath());
if (f.exists()) {
f.delete();
}
break;
}
case PICK_FROM_ALBUM: {
mImageCaptureUri = data.getData();
}
case PICK_FROM_CAMERA: {
// 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다.
// 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다.
Log.i("lkm", "PICK_FROM_CAMERA ======= path: " + mImageCaptureUri);
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(mImageCaptureUri, "image/*");
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("aspectX", 2);
intent.putExtra("aspectY", 2);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, CROP_FROM_CAMERA);
break;
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
new AlertDialog.Builder(this).setTitle("업로드할 이미지 를 선택")
.setPositiveButton("사진촬영", cameraListener)
.setNeutralButton("앨범보기", albumListener)
.setNegativeButton("취소", cancelListener).show();
break;
case R.id.back:
Intent back = new Intent(this, VideoList.class);
startActivity(back);
break;
case R.id.next:
Intent i = new Intent(this, Edit.class);
i.putExtra("uri", mSaveCropPhotePath);
// byte[] arr = getIntent().getByteArrayExtra("image"); 비트맵으로 넘기기
// i.putExtra("img", arr);
i.putExtra("asdf", kk);
Log.e("asdf", kk);
startActivityForResult(i, 0);
// finish();
break;
}
}
DialogInterface.OnClickListener cameraListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
doTakePhotoAction();
}
};
DialogInterface.OnClickListener albumListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
doTakeAlbumAction();
}
};
DialogInterface.OnClickListener cancelListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
};
public void setImage() {
Log.i("lkm", "setImage ======= mPhotoImageView , mImageCaptureUri : "
+ mImageCaptureUri);
mPhotoImageView.setImageURI(mImageCaptureUri);
}