빨갛게 칠한 부분이 갤러리를 불러오고 사진을 선택하면 크롭을 해야하는데
사진선택시, 크롭 부분이 나오지 않고 바로 파일을 선택, 넘겨받게 됩니다.
제가 볼땐문제가 없어보이는데...
혹시 아시는분 계신가요?
ImageView iv_user_photo = (ImageView) findViewById(R.id.iv_user_photo);
iv_user_photo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
startActivityForResult(intent, RESULT_LOAD_IMAGE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE ) {
mImageCaptureUri = data.getData();
File original_file = getImageFile(mImageCaptureUri);
mImageCaptureUri = createSaveCropFile();
File cpoy_file = new File(mImageCaptureUri.getPath());
copyFile(original_file, cpoy_file);
Intent intent2 = new Intent("com.android.camera.action.CROP");
intent2.setDataAndType(mImageCaptureUri, "image/*");
intent2.putExtra("output", mImageCaptureUri);
intent2.putExtra("aspectX", 1);
intent2.putExtra("aspectY", 1);
intent2.putExtra("scale", true);
String full_path = mImageCaptureUri.getPath();
String photo_path = full_path.substring(4, full_path.length());
picturePath = full_path;
ImageView imageView = (ImageView) findViewById(R.id.iv_user_photo);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
private Uri createSaveCropFile(){
Uri uri;
String url = "somediary_" + String.valueOf(System.currentTimeMillis()) + ".jpg";
uri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), url));
return uri;
}
private File getImageFile(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
if (uri == null) {
uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
}
Cursor mCursor = getContentResolver().query(uri, projection, null, null,
MediaStore.Images.Media.DATE_MODIFIED + " desc");
if(mCursor == null || mCursor.getCount() < 1) {
return null; // no cursor or no record
}
int column_index = mCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
mCursor.moveToFirst();
String path = mCursor.getString(column_index);
if (mCursor !=null ) {
mCursor.close();
mCursor = null;
}
return new File(path);
}
public static boolean copyFile(File srcFile, File destFile) {
boolean result = false;
try {
InputStream in = new FileInputStream(srcFile);
try {
result = copyToFile(in, destFile);
} finally {
in.close();
}
} catch (IOException e) {
result = false;
}
...................................생략