투케이2K

385. (android/java) Intent 사용해 카메라 (camera) , 갤러리 (gallery) 호출 및 crop 사용해 이미지 자르기 수행 후 가져오기 본문

Android

385. (android/java) Intent 사용해 카메라 (camera) , 갤러리 (gallery) 호출 및 crop 사용해 이미지 자르기 수행 후 가져오기

투케이2K 2022. 11. 4. 11:17
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[호출 : 소스 코드]

	three_button.setOnClickListener(new View.OnClickListener() {
		@Override
		public void onClick(View v) {
			Toast.makeText(getApplication(), "THREE 수행", Toast.LENGTH_SHORT).show();
			try {

				// TODO [요약 설명]
				/**
				 * ------------------------------------
				 * 1. 필요 권한 :
				 *
				 * <uses-permission android:name="android.permission.CAMERA"/>
				 * ------------------------------------
				 * 2. 테스트 참고 :
				 *
				 * 디바이스에서 기본으로 제공하는 [갤러리] 에서 사진을 선택해야합니다 (ex: 파일 관리자 등 다른 어플에서 수행하면 안됨)
				 * ------------------------------------
				 * */


				// TODO [카메라 호출]
				/*
				Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
				intent.putExtra(MediaStore.EXTRA_OUTPUT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());

				// [이미지 잘라내기 위한 크기]
				intent.putExtra("crop", "true");
				intent.putExtra("aspectX", 0);
				intent.putExtra("aspectY", 0);
				intent.putExtra("outputX", 200);
				intent.putExtra("outputY", 150);

				try {
					intent.putExtra("return-data", true);
					startActivityForResult(intent, PICK_FROM_CAMERA);
				} catch (Exception e) {
					e.printStackTrace();
				}
				// */


				// TODO [Gallery 호출]
				Intent intent = new Intent();
				intent.setType("image/*"); // [이미지 타입 지정]
				intent.setAction(Intent.ACTION_GET_CONTENT);

				// [잘라내기 셋팅]
				intent.putExtra("crop", "true");
				intent.putExtra("aspectX", 0);
				intent.putExtra("aspectY", 0);
				intent.putExtra("outputX", 200);
				intent.putExtra("outputY", 150);
				try {
					intent.putExtra("return-data", true);
					startActivityForResult(Intent.createChooser(intent,
							"Complete action using"), PICK_FROM_GALLERY);
				} catch (Exception e) {
					e.printStackTrace();
				}

			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});

[응답 : 소스 코드]

	// TODO [변수 선언 실시]
	private static final int PICK_FROM_CAMERA = 1;
	private static final int PICK_FROM_GALLERY = 2;





	// TODO [인텐트 결과 응답 확인]
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);

		// TODO [카메라 호출 결과]
		if (requestCode == PICK_FROM_CAMERA) {
			Log.d("---", "---");
			Log.w("//===========//", "================================================");
			Log.d("", "\n" + "[A_AA_Test_Java > onActivityResult() 메소드 : 카메라 호출 로직 처리]");
			Log.w("//===========//", "================================================");
			Log.d("---", "---");

			Bundle extras = data.getExtras();
			if (extras != null) {
				Bitmap photo = extras.getParcelable("data");
				imageView.setImageBitmap(photo); // [이미지 뷰에 표시]
			}
		}

		// TODO [갤러리 호출 결과]
		if (requestCode == PICK_FROM_GALLERY) {
			Log.d("---", "---");
			Log.w("//===========//", "================================================");
			Log.d("", "\n" + "[A_AA_Test_Java > onActivityResult() 메소드 : 갤러리 호출 로직 처리]");
			Log.w("//===========//", "================================================");
			Log.d("---", "---");

			Bundle extras2 = data.getExtras();
			if (extras2 != null) {
				Bitmap photo = extras2.getParcelable("data");
				imageView.setImageBitmap(photo); // [이미지 뷰에 표시]
			}
		}
	}
 

[결과 출력]


 

반응형
Comments