[Android] Camera 호출 후 이미지 Crop하기 예제

안드로이드에서 카메라를 이용하여 이미지 촬영후 해당 이미지를 크롭하는 경우의 예제를 만들어 보았습니다. 이 예제에서는 카메라를 이용하는것 외에도 앨범에서 이미지를 가져오는 경우에도 마찬가지로 크롭을 할 수 있도록 하였습니다.

1. AndroidManifest.xml 에 권한 추가하기

2. main.xml 레이아웃 만들기

3. 소스 코드 작성

테스트 이미지는 생략하겠습니다. 위의 소스로 충분히 좋은 설명이 될 수 있을것이라 생각합니다. 두번의 Intent 호출을 통해 이미지를 촬영하고 크롭을 하는 과정을 거치게 됩니다. 테스트 해보니 잘 되는군요.

참고 : http://stackoverflow.com/questions/1973359/android-crop-an-image-after-taking-it-with-camera-with-a-fixed-aspect-ratio

  • 초보개발자

    궁금한게 있습니다. 크롭된 이미지를 받고 난 후에 이미지뷰에 이미지를 띄우는거 까지 성공했습니다.
    그런데 이 이미지를 다른 액티비티에도 띄우고 싶은데 어떻게 해야할지 몰라 댓글을 남깁니다.

    위 소스에서 이미지를 표시하고 임시파일을 삭제하는데 삭제하기전에 그 이미지를 다른액티비티로 넘겨서 보여줘야 되지 않을까요?

    그리고 이미지를 옮기는 방법도 고민인데 현재 uri를 이용해서 해보려고 합니다.

    String path=mImageCaptureUri.getPath();
    Intent it3 = new Intent(this, ResultActivity.class);
    it3.putExtra(“ImgUri”,path);

    이렇게 해놓고 받을 액티비티에는

    mPhotoImageView = (ImageView) findViewById(R.id.imageView1);
    Intent img = getIntent();
    String path=img.getStringExtra(“ImgUri”);

    이렇게 해주었습니다. 이게 맞는건지 궁금하네요

  • 초보개발자

    아 그리고 크롭된 이미지가 임시파일로 생성되는데 그 경로가 어떻게 되는건가요??

    경로를 알면 그 경로를 따서 다른 액티비티에 끌어다 쓸 수 있지 않을까해서요..

  • 카네기

    [2013-11-24 02:02:24 – Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    [2013-11-24 02:02:24 – CameraCropExample] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

    이런 오류가 뜨는데..;;
    어떻게 해결하죠???;;

  • 아아아

    이 소스코드가 너무 필요했습니다. 약 40시간동안 찾아다녔는데 덕분에 살았습니다.

  • 방준영

    카메라로 찍는거 선택하면 앱이 죽는데 왜그러는지…아시나요 ㅠ