[ 안드로이드 ] 이미지 관련 - 절대경로를 얻었는데, imgView에 씌워지지가 않습니다...

조회수 9146회

안녕하세요, 안드로이드 공부중인 초보입니다.

특정버튼을 클릭하면 "ACTION_PICK"을 통해서 갤러리 화면을 띄우고, 이미지를 선택해서 원하는 이미지뷰에 선택한 이미지를 띄우려고 헀는데요,,

원래 Bitmap image_bitmap = MediaStore.Images.Media .getBitmap(getContentResolver(), data.getData());

(이걸로 받아온 비트맵 값) content://media/external/images/media/10082

이걸로 이미지를 그리면, 선택한이미지가 이미지 뷰에 잘 그려졌습니다.

(절대경로를 구하고 그걸 이미지 뷰에 씌우는 방법을 하려는 이유는, 이미지 절대경로를 String으로 저장했다가 다시 앱을 킬때도 저장된 경로로 이미지를 띄우려 해서 입니다. 이 위의 컨텍스트 경로를 저장했다가 리스트 뷰로 이미지를 그리려 하니까 실패하더라구요..)

그래서 이미지의 절대 경로를 구해서 그리려고 시도해봤습니다 (기종 : 갤럭시s6 - 내부 갤러리에 저장된 이미지)

Uri selectedImg_uri;

this.selectedImg_uri = Uri.parse(selectedImg_path);

현재 selectedImg_uri 이거 값이 /storage/emulated/0/Download/13659028_1035067996585531_2022603899746916935_n.jpg 이거로 되어있습니다.

시도 방법1)

//그리기

image_selected.setImageURI(selectedImg_uri);

시도방법2)

File img_pathFile = new File(String.valueOf(selectedImg_uri));

Bitmap bm_imgPath;

BitmapFactory.Options bm_options;

try{    
    bm_imgPath=BitmapFactory.decodeFile(img_pathFile.getAbsolutePath());    
    System.out.println("Try(aaaa)");    
} catch (OutOfMemoryError e){
    bm_options = new BitmapFactory.Options();
    bm_options.inSampleSize = 2;
    bm_imgPath = BitmapFactory.decodeFile(img_pathFile.getAbsolutePath(), bm_options);
    System.out.println("OutOfMemoryError(aaaa)");
} catch (Exception e){
    bm_imgPath = null;
    System.out.println("Exception(aaaa)");
}

System.out.println("이거 널???(aaaa):"+String.valueOf(bm_imgPath)); (→네,, 이게 null이 뜹니다..);

System.out.println("bm_imgPath(aaaa):"+String.valueOf(img_pathFile.getAbsolutePath()));

//그리기 image_selected.setImageBitmap(bm_imgPath);


위의 두방법 다 실행이 되지 않아서요, 제가 잘못한 부분이 보이시면 지적 부탁드리겠습니다!


  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 제 환경에서는 방법1로 잘 나오는 것을 확인했습니다. 해당 파일이 존재하는지 혹은 다른 코드에 문제가 없는지 확인해보세요.

    제가 테스트 한 이미지의 절대 경로를 이용해 imageView에 설정하는 코드입니다.

    String path = "/storage/emulated/0/Download/PS16011800314.jpg"
    imageView.setImageURI(Uri.parse(path));
    

    OS가 마시멜로라면 READ_EXTERNAL_STORAGE에 대한 권한 동의가 이루어졌는지 확인하시기 바랍니다. 권한 처리는 다음 링크를 확인하세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 아! 감사합니다, 안드로이드 4.4.2 에서 해보니 방법1 2랑 다른방법도 다 잘 되는데, 마시멜로 이슈 인거같아요, 권한동의 확인해서 다시 해보겠습니다. 감사합니다! 알 수 없는 사용자 2016.7.19 11:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)