마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

갤러리에서 이미지 가져오기 질문있습니다! ㅠㅠ

0 추천

<메인>

package photo;

import blog.naver.com.since201109.imagepuzzle.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
 private ImageView imgView;
// private View view = null;
 ImageProcess imgPrcs = new ImageProcess();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  imgView = (ImageView) findViewById(R.id.selectImg);
 }
 
 public void mOnClick(View v) {
  switch(v.getId()){
  case R.id.loadImg:
   Intent intent = imgPrcs.setIntent(); // 갤러리 뜬다. 이미지 선택하면 OnActivityResult 메서드 호출된다.
   startActivityForResult(intent, 0);
   break;
  }
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }
 
 // 이미지가 선택되면 호출
 protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
  switch (requestCode) {
  case 0 :
   ContentResolver cr = getContentResolver();
   Bitmap bitMap = imgPrcs.getBitMap(cr, intent);
//   Display defaultDisplay = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
//   int width = defaultDisplay.getWidth();  // 화면 가로 크기
//   bitMap = imgPrcs.reSizeBitMap(bitMap);
   imgView.setImageBitmap(bitMap);
   break;
  default:
   break;
  }
 }
}

 

 

 

<imageprocess class 소스>

package photo;

import java.io.FileNotFoundException;
import java.io.IOException;

import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore.Images;

public class ImageProcess {

 // 선택된 이미지를 화면에 출력
 public Bitmap getBitMap(ContentResolver cr, Intent intent) {
  Bitmap bitMap = null;
  Uri imgUri = intent.getData();
  try {
   bitMap = Images.Media.getBitmap(cr, imgUri);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return bitMap;
 }

 public Intent setIntent() {
  Intent intent = new Intent(Intent.ACTION_PICK);
  intent.setType(Images.Media.CONTENT_TYPE);
  intent.setData(Images.Media.EXTERNAL_CONTENT_URI);
  return intent;
 }

 // 선택된 이미지를 정사각형 편집
 public Bitmap reSizeBitMap(Bitmap bitMap) {
  int bitMapWidth = bitMap.getWidth();
  int bitMapHeight = bitMap.getHeight();
  
  if(bitMapWidth > bitMapHeight) {
   bitMap = Bitmap.createBitmap(bitMap, 0, 0, bitMapHeight, bitMapHeight);
  } else {
   bitMap = Bitmap.createBitmap(bitMap, 0, 0, bitMapWidth, bitMapWidth);
  }
  return bitMap;
 }
}

 

<액티비티 메인>

<RelativeLayout xmlns:a="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    a:layout_width="match_parent"
    a:layout_height="match_parent"
    tools:context=".MainActivity" >
    <LinearLayout a:layout_width="fill_parent"
        a:layout_height="wrap_content"
        a:orientation="vertical" >
     <Button a:id="@+id/loadImg"
         a:layout_width="fill_parent"
         a:layout_height="wrap_content"
         a:text="Image Load"
         a:onClick="mOnClick"/>
     <ImageView a:id="@+id/selectImg"
         a:layout_width="fill_parent"
         a:layout_height="wrap_content" />
    </LinearLayout>
</RelativeLayout>

 

 

실행하게 되면 갤러리에서 이미지를 가져오는 것은 가능한데

저장이 안되네요,,,, 이미지를 불러오고 앱 화면에 이미지를

저장하는 방법을 알려주세요!! 부탁드립니다,,,

익명사용자 님이 2017년 12월 13일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...