<메인>
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>
실행하게 되면 갤러리에서 이미지를 가져오는 것은 가능한데
저장이 안되네요,,,, 이미지를 불러오고 앱 화면에 이미지를
저장하는 방법을 알려주세요!! 부탁드립니다,,,