마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지 (크롭)에 대한 질문입니다.

0 추천
빨갛게 칠한 부분이 갤러리를 불러오고 사진을 선택하면 크롭을 해야하는데 
사진선택시, 크롭 부분이 나오지 않고 바로 파일을 선택, 넘겨받게 됩니다.
 
제가 볼땐문제가 없어보이는데...
혹시 아시는분 계신가요?
 
 
 
 
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;
       }
...................................생략
발삼체다 (650 포인트) 님이 2015년 1월 27일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...