Notice
Recent Posts
Recent Comments
Link
투케이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();
}
}
}
/* =========================== */
/* =========================== */
[파일 첨부]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments