Gallery 어플에 있는 이미지를 Crop 하여 가져오는 방법으로
intent 간에 data 가 100kb 가 넘어갈경우 에러가 발생하므로
아래와같이 파일로 저장후 읽어들여 가져옴

private static final String TEMP_PHOTO_FILE = "temporary_holder.jpg";   
 
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
photoPickerIntent
.setType("image/*"); 
photoPickerIntent
.putExtra("crop", "true"); 
photoPickerIntent
.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri()); 
photoPickerIntent
.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
startActivityForResult
(photoPickerIntent, REQ_CODE_PICK_IMAGE); 
 
 
   
private Uri getTempUri() { 
   
return Uri.fromFile(getTempFile()); 
   
} 
 
   
private File getTempFile() { 
   
if (isSDCARDMounted()) { 
 
   
File f = new File(Environment.getExternalStorageDirectory(),TEMP_PHOTO_FILE); 
   
try { 
    f
.createNewFile(); 
   
} catch (IOException e) { 
 
   
} 
   
return f; 
   
} else { 
   
return null; 
   
} 
   
} 
 
   
private boolean isSDCARDMounted(){ 
   
String status = Environment.getExternalStorageState(); 
   
if (status.equals(Environment.MEDIA_MOUNTED)) 
   
return true; 
   
return false; 
   
} 
 
 
 
 
protected void onActivityResult(int requestCode, int resultCode, 
       
Intent imageReturnedIntent) { 
   
super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
 
   
switch (requestCode) { 
   
case REQ_CODE_PICK_IMAGE: 
       
if (resultCode == RESULT_OK) {   
         
if (imageReturnedIntent!=null){ 
 
 
 
               
File tempFile = getTempFile(); 
 
             
String filePath= Environment.getExternalStorageDirectory() 
           
+ "/temporary_holder.jpg"; 
             
System.out.println("path "+filePath); 
 
 
   
Bitmap selectedImage =  BitmapFactory.decodeFile(filePath); 
    _image
= (ImageView) findViewById(R.id.image); 
    _image
.setImageBitmap(selectedImage ); 
 
  } 
 } 
}

+ Recent posts