투케이2K

95. (AndroidStudio/android/java) crop 라이브러리 사용해 사용자 모바일 기기에 저장된 사진 및 이미지 리사이징 후 서버에 등록 요청 실시 본문

Android

95. (AndroidStudio/android/java) crop 라이브러리 사용해 사용자 모바일 기기에 저장된 사진 및 이미지 리사이징 후 서버에 등록 요청 실시

투케이2K 2021. 3. 30. 10:14
반응형

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//===============================갤러리에서 선택한 이미지 확인 메소드=============================
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
	if (resultCode != RESULT_OK) {
		Toast.makeText(getApplication(), "다시 시도해주세요.", Toast.LENGTH_SHORT).show();
	}
	if (requestCode == PICK_FROM_ALBUM) {
		if (data == null) {
			return;
		}
		photoUri = data.getData();
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[A_Picture > onActivityResult() 메소드 : PICK_FROM_ALBUM 응답 확인 실시]");
		Log.d("","\n"+"[파일 경로 : "+String.valueOf(photoUri)+"]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		try {
			// 선택한 이미지에서 비트맵 생성
			InputStream in = getContentResolver().openInputStream(data.getData());
			Bitmap img = BitmapFactory.decodeStream(in);
			in.close();
			// 이미지 표시
			imageView.setImageBitmap(img);
		}
		catch (Exception e){
			e.printStackTrace();
		}
		/** [설 명]
		 *  1. cropImage() 메소드는 갤러리에서 선택한 이미지를 잘라서 리사이징한다
		 *  2. 구글 포토 등 사용 시 cropImage() 메소드에서 grantUriPermission 권한 Exception 발생 한다
		 *  3. cropImage() 메소드 내에서 try catch 구문 처리를 실시해 Exception 발생 시 > imageView 에 표시된 사진을 바이트로 변환해 저장한다
		 * */
		cropImage();
		//cropImageTest();
	} else if (requestCode == PICK_FROM_CAMERA) {
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[A_Picture > onActivityResult() 메소드 : PICK_FROM_CAMERA 응답 확인 실시]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		/** [설 명]
		 *  1. cropImage() 메소드는 갤러리에서 선택한 이미지를 잘라서 리사이징한다
		 *  2. 구글 포토 등 사용 시 cropImage() 메소드에서 grantUriPermission 권한 Exception 발생 한다
		 *  3. cropImage() 메소드 내에서 try catch 구문 처리를 실시해 Exception 발생 시 > imageView 에 표시된 사진을 바이트로 변환해 저장한다
		 * */
		cropImage();
		MediaScannerConnection.scanFile(A_Picture.this, //앨범에 사진을 보여주기 위해 Scan을 합니다.
				new String[]{photoUri.getPath()}, null,
				new MediaScannerConnection.OnScanCompletedListener() {
					public void onScanCompleted(String path, Uri uri) {
					}
				});
	} else if (requestCode == CROP_FROM_CAMERA) {
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[A_Picture > onActivityResult() 메소드 : CROP_FROM_CAMERA 응답 확인 실시]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		try { //저는 bitmap 형태의 이미지로 가져오기 위해 아래와 같이 작업하였으며 Thumbnail을 추출하였습니다.
			Bitmap bitmap = MediaStore.Images.Media.getBitmap(A_Picture.this.getContentResolver(), photoUri);
			Bitmap thumbImage = ThumbnailUtils.extractThumbnail(bitmap, 128, 128);
			ByteArrayOutputStream bs = new ByteArrayOutputStream();
			thumbImage.compress(Bitmap.CompressFormat.JPEG, 100, bs); //이미지가 클 경우 OutOfMemoryException 발생이 예상되어 압축

			//여기서는 ImageView에 setImageBitmap을 활용하여 해당 이미지에 그림을 띄우시면 됩니다.
			imageView.setImageBitmap(thumbImage);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

/* =========================== */

/* =========================== */

[파일 첨부]

이미지 사진 지정 및 서버로 전송 소스코드.txt
0.06MB

/* =========================== */

반응형
Comments