안규 공부방

Android > 기본 Gallery에서 선택된 Image 가져오기

등록일 : 2017-07-06 17:50 조회수 : 258,457

기본 Gallery를 열어 Image를 선택해 올 버튼 하나와 선택한 Image를 보여줄 ImageView를 배치




버튼 클릭 시 기본 Gallery로 이동
 
	public class gallery1 extends Activity {
	
		final int REQ_CODE_SELECT_IMAGE=100;


		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
	

			......
			
			//버튼 클릭시 처리로직 
			Intent intent = new Intent(Intent.ACTION_PICK);                
			intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
			intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
			startActivityForResult(intent, REQ_CODE_SELECT_IMAGE); 

			......

		}

	}



선택한 이미지 데이터 받기
 
		@Override 
		protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
			
			
			Toast.makeText(getBaseContext(), "resultCode : "+resultCode,Toast.LENGTH_SHORT).show();
			
			if(requestCode == REQ_CODE_SELECT_IMAGE) 
			{ 
				if(resultCode==Activity.RESULT_OK) 
				{     
					try { 
						//Uri에서 이미지 이름을 얻어온다. 
						//String name_Str = getImageNameToUri(data.getData()); 

						//이미지 데이터를 비트맵으로 받아온다. 
						Bitmap image_bitmap 	= Images.Media.getBitmap(getContentResolver(), data.getData());
						ImageView image = (ImageView)findViewById(R.id.imageView1); 

						//배치해놓은 ImageView에 set 
						image.setImageBitmap(image_bitmap);     
						
						
					//Toast.makeText(getBaseContext(), "name_Str : "+name_Str , Toast.LENGTH_SHORT).show();

					
					} catch (FileNotFoundException e) { 
						// TODO Auto-generated catch block 
						e.printStackTrace(); 
					} catch (IOException e) { 
						// TODO Auto-generated catch block 
						e.printStackTrace(); 
					} catch (Exception e)
					{
	            		e.printStackTrace();
					} 
				}     
			}   
		}
		
	


Uri 에서 파일명을 추출하는 로직
		public String getImageNameToUri(Uri data) 
		{ 
			String[] proj = { MediaStore.Images.Media.DATA }; 
			Cursor cursor = managedQuery(data, proj, null, null, null); 
			int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

			cursor.moveToFirst(); 

			String imgPath = cursor.getString(column_index); 
			String imgName = imgPath.substring(imgPath.lastIndexOf("/")+1); 

			return imgName; 
		} 







이미지 Crop 기능 넣기
 
	// crop된 이미지가 저장될 경로를 설정
        File tempFile = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");
        Uri tempUri = Uri.fromFile(tempFile);
  
	    intent.putExtra("crop", "true");
	    intent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);

	    intent.setType("image/*");




접근 권한은 외장메모리를 설정해 줘야 합니다.
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
ㅎㄲㅎㄲ    2018-01-10 16:55
삭제
안드로이드 공부하는 학생입니다~ 죄송하지만 Uri 에서 파일명을 추출하는 로직 부분 설명 좀 해주시겠습니까 ㅠㅠ 코드들이 이해가 잘안됩니다 구글링하고있는데 코드에 대한 설명보다는 활용 하는게 많이 나오네요...
 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.