1. 跳转系统相册所在activity获取图片
public static void selectPhoto(Activity activity) {
//使用这个方法可以调用,会让用户选择照片选取工具。系统会选取所有可用的程序来供用户选择
Intent intent = new Intent(Intent.ACTION_PICK, null);
//如果要限制上传到服务器的图片类型时可以直接写如:”image/jpeg 、 image/png等的类型”
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
activity.startActivityForResult(intent, INTENT_REQUEST_CODE_ALBUM);
//跳转到系统相册activity,requestCode = INTENT_REQUEST_CODE_ALBUM
}
2.onActivityResult接收所选图片信息(对应:返回数据给上一个活动)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
//根据requestCode确定是从相册里获取后返回,返回所选图片信息
case ImageUtils.INTENT_REQUEST_CODE_ALBUM:
//在相册中未选取图片且按了返回键,则data=null。用户按了返回键则resultCode == RESULT_CANCELED
if(data == null)
return;
}
if (resultCode == RESULT_OK) {
//选取图片成功返回相关数据
if (data.getData() == null) {
return;
}
if (!FileUtils.isSdcardExist()) {
ToastUtil.showMid(this, R.string.toast_sdcard_unavailable);
return;
}
Uri uri = data.getData();//拿到所选图片的Uri。
}
break;
3.android 通过uri获取bitmap图片并压缩
主函数:
switch (requestCode) {
case ImageUtils.INTENT_REQUEST_CODE_ALBUM:
if(data == null){
return;
}
if (resultCode == RESULT_OK) {
接第二部分代码
//参数1:要查询的资源的uri(The URI of the content provider to query.)
//参数2:查询该uri资源的哪几列List of columns to return
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, proj, null, null, null);
if (cursor != null) {
if (cursor.getCount() > 0 && cursor.moveToFirst()) {
String path = ImageUtils.getPath(this, uri)
//根据图片存储路径得到图片
Bitmap bitmap = ImageUtils.getBitmapFromPath(path);
/**
判断图片是否过大,如果过大就压缩图片并将压缩图片存入SD卡;如果图片不大,则创建缩略图?
*/
if (ImageUtils.bitmapIsLarge(bitmap)) {
// Compression Photo压缩图片
Bitmap bitmap1 = ImageUtils.CompressionPhoto(mScreenWidth, path, 5);
//将压缩后的图片存入sdk
String str = ImageUtils.savePhotoToSDCard(this, bitmap1, ChatApplication.IMAG_PATH, null);
try{MediaStore.Images.Media.insertImage(this.getContentResolver(),str, null, null);
} catch (FileNotFoundException e) {
e.printStackTrace()
}
//压缩后创建缩略图,用于消息界面的显示。
ImageUtils.createThumbnail(this, str, THUMBNAIL_PATH &#