首先是布局,放一个button(btn_xiangce)和imgview (img_xiangce)
主代码
Button btn_xiangce; // 从相册中获取图片按钮
ImageView img_xiangce; // 显示从相册里获取的图片
String imageId_xiangCe; // 相册中获取图片的id
Uri uri_xiangCe; // 从相册里获取图片的路径
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init(); // 得到控件。并设置监听
}
// 得到控件,并设置监听
public void init() {
btn_xiangce = (Button) findViewById(R.id.btn_xiangce);
img_xiangce = (ImageView) findViewById(R.id.img_xiangce);
btn_xiangce.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_xiangce: // 相册中获取图片
// 从相册中获取图片
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 100);
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
/********************************** 从相册中获取图片 *******************************************/
// 获取相册照片返回
if (requestCode == 100 && resultCode == RESULT_OK) {
// /获取照片后进行裁剪//
uri_xiangCe = data.getData();
caiJianImage();
}
// 裁剪返回
if (requestCode == 113 && resultCode == RESULT_OK) {
// 取得SDCard图片路径做显示
Bundle extras = data.getExtras();
// 得到图片
Bitmap photo = extras.getParcelable("data");
img_xiangce.setImageBitmap(photo);
}
}
/**
* 裁剪
*/
public void caiJianImage() {
// /获取照片后进行裁剪//
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri_xiangCe, "image/*");
Log.i("xlp", "uri_xiangCe>>" + uri_xiangCe);
// 截取最后一个/后面的字符(图片id)
String[] u = uri_xiangCe.toString().split("/");
imageId_xiangCe = u[u.length - 1].toString();
Log.i("xlp", ">>>u1:" + imageId_xiangCe);
// crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", true);
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("return-data", true);
startActivityForResult(intent, 113);
}
最后添加权限
<!-- 由于涉及到SD卡中写数据操作和Camera操作,需要在AndroidMainfest.xml文件中声明权限: -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />