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

카메라에서 ImageView에 사진을 넣으려는데요

0 추천

보이는것처럼 사진이  카메라로 찍어서 이미지뷰에 넣으면 이미지화질이 깨지네요 ;;

갤러리에서 가져오면 깨끗한데 카메라로 찍기만하면 이렇게되네요 코드는 아래첨부할게요

public class Place_Gyoengbok_Gwanghwamun extends Activity{

 Button mGallery, mCamera, mCertify;
 ImageView imgView;
 TextView mText;
 Bitmap bmp;
 Uri currImgURI;
 String FilePath;
 
 protected final int SELECT_GALLERY = 1;
 protected final int SELECT_CAMERA = 2;
 
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.place_gyeongbok_gwanghwamun);
  
  mGallery = (Button)findViewById(R.id.gallery);
  mCamera = (Button)findViewById(R.id.camera);
  imgView = (ImageView)findViewById(R.id.exgwanghwa);
  mText = (TextView)findViewById(R.id.textgwanghwa);
  mCertify = (Button)findViewById(R.id.certify);
  
  mGallery.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    startActivityForResult(intent, SELECT_GALLERY);
   }
  });
  mCamera.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent = new Intent();
    intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, SELECT_CAMERA);
   }
  });
  
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data){
  if(resultCode == RESULT_OK){
   if(requestCode==SELECT_CAMERA){
    bmp =(Bitmap)data.getExtras().get("data");
    mText.setText("CAMERA : " + data.getDataString());
    imgView.setImageBitmap(bmp);
   }else if(requestCode==SELECT_GALLERY){
    try{
     currImgURI=data.getData();
     mText.setText("GALLERY : " + getRealPathFromURI(currImgURI));
     imgView.setImageURI(currImgURI);
     FilePath=getRealPathFromURI(currImgURI);
     bmp=Images.Media.getBitmap(getContentResolver(), currImgURI);
    }catch(Exception e){}
   }
  }
 }
 private String getRealPathFromURI(Uri uri) {
  // TODO Auto-generated method stub
  String[] projection = { MediaStore.Images.Media.DATA };
  Cursor cursor = managedQuery(uri, projection, null, null, null);
  int column_index = cursor
    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  return cursor.getString(column_index);
 }

}

 

부개동지킴이 (590 포인트) 님이 2013년 10월 21일 질문

1개의 답변

0 추천
카메라로 찍은 후 넘어오는 인텐트의 'data' Extra에 들어있는 비트멥은 인텐트에 넣을 수 있는 용량 제한으로 인해 보통 썸네일 이미지가 들어가서 전달되어 옵니다. 따라서 해당 data 이미지를 이미지뷰에 바로 넣으실 경우 아무래도 원본 이미지보다 품질이 떨어 질 수 밖에 없습니다. 원본 이미지를 원하시면 사진 촬영 후 해당 이미지의 원본을 가져오셔서 출력하셔야 합니다.
whitesnow (8,920 포인트) 님이 2013년 10월 22일 답변
...