相信大家在工作都要用到获取手机图片的需求,今天给大家介绍一下,我在项目中学习到的获取图片的方法。
话不多说,上代码:
通过intent获取手机中所以的图片
public static final int PHOTOZOOM = 2; // 缩放
public static final int PHOTORESOULT = 3;// 结果
public static final String IMAGE_UNSPECIFIED = "image/*";
Intent intent = new Intent(Intent.ACTION_GET_CONTENT,
null);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
IMAGE_UNSPECIFIED);
startActivityForResult(intent, PHOTOZOOM);
2.onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PHOTOZOOM) {
startPhotoZoom(data.getData());
Uri uri = data.getData();
String[] pojo = { MediaStore.Images.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = managedQuery(uri, pojo, null, null, null);
if (cursor != null) {
int index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String path = cursor.getString(index);
if (path != null) {
picPath = path;
}
}
}
// 处理结果
if (requestCode == PHOTORESOULT) {
Bundle bundle = data.getExtras();
if (bundle != null) {
Bitmap photo = bundle.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0-100)压缩文件
// icon.setImageBitmap(photo);
}
if (picPath == null) {
Toast.makeText(SendImageActivity.this, "未修改图片!", Toast.LENGTH_SHORT)
.show();
} else {
final File file = new File(picPath);
Log.i("picPath", "******" + picPath);
if (file != null) {
//在这的file就是你获取到的图片文件
}
}
}
super.onActivityResult(requestCode, resultCode, data);
}
3.图片缩放方法
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 200);
intent.putExtra("return-data", true);
startActivityForResult(intent, PHOTORESOULT);
}