위 그림과 같이 카메라 버튼을 클릭하면
gllery가 뜨게 되고 사진을 선택하면
사진을 가져오게 됩니다
헌데 사진 크기(용량)가 크면 out of Memory가 나면서
(용량 문제인거 같습니다 Exception이 나는 사진은 1M가 넘네요)
종료가 되네요 검색을 보았는데 잘안되어서 질문 드립니다
어떻게 처리해야 하는지 답변좀 달아주시면 감사하겠습니디
밑에는 간략한 소스입니다
============================
- gallry에서 사진 클릭시 onActivityResult에서 받아와서 뿌려줍니다
============================
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
try {
if(!intent.getData().equals(null)){
selPhotoUri = intent.getData();
// BitmapFactory.Options options = new BitmapFactory.Options();
// options.inSampleSize = 4;
// Bitmap orgImage = BitmapFactory.decodeFile(selPhotoUri+"", options);
selPhoto = Images.Media.getBitmap( getContentResolver(), selPhotoUri );<=============Exception발생 부분
// selPhoto.setPixel(100, 100, 2);
selPhoto = Bitmap.createScaledBitmap(selPhoto, 100, 100, true);
// System.out.println("selPhotoUri : "+selPhotoUri);
// System.out.println("selPhoto : "+selPhoto);
// System.out.println("image_bt : "+image_bt);
image_bt.setImageBitmap(selPhoto);//썸네일
}else {
image_bt.setImageResource(R.id.icon);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}// End of onActivityResult()
메인 화면에 뜨는 큰 사진은
private Uri selPhotoUri;를 DB에 자장하여
메인에서 불러와
if(!cur.getString(0).equals(null)){
Uri selPhotoUri = Uri.parse(cur.getString(0));
selPhoto = Images.Media.getBitmap( getContentResolver(),selPhotoUri);
selPhoto = Bitmap.createScaledBitmap(selPhoto, 450, 272, true);
imageBtn.setImageBitmap(selPhoto);
}
이러식으로 Image button에 bitmap을 입히는 방식입니다




Gallery에서 가져오는 사진의 정보가 다르기 때문에 Sampling 하신 후 정하신 픽셀값으로 사진을 불러 드리는게 Memory Exception 에러가 안날 가능성이 높을 것 같습니다. 샘플링은 1/4이나 1/6정도 하는게 좋겠군요..원본이미지 최대한 유지 하실려면요..