您的位置:首页 > 移动开发 > Android开发

android 从相册中获取图片

2016-04-13 23:29 435 查看
首先是布局,放一个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" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: