调用相机拍照获取图片:
跳转到到拍照界面:
Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//下面这句指定调用相机拍照后的照片存储的路径
mSzImageFileName = Long.toString(System.currentTimeMillis()) + ".png";
takeIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(Environment.getExternalStorageDirectory(), mSzImageFileName)));
startActivityForResult(takeIntent, REQUEST_TAKE_PHOTO);
从相册获取图片:
从相册选择图片:
Intent pickIntent = new Intent(Intent.ACTION_PICK, null);
// 如果要限制上传到服务器的图片类型时可以直接写如:image/jpeg 、 image/png等的类型
pickIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(pickIntent, REQUEST_PICK_PHOTO);
从相册返回一张图片或者拍照返回一张图片:
监听返回结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_PICK_PHOTO:
// 直接从相册获取
try {
startPhotoZoom(data.getData());
//跳转到截图界面
} catch (NullPointerException e) {
e.printStackTrace();// 用户点击取消操作
}
break;
case REQUEST_TAKE_PHOTO:
// 调用相机拍照
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
File temp = new File(Environment.getExternalStorageDirectory(), mSzImageFileName);
if (temp.exists()) {
startPhotoZoom(Uri.fromFile(temp));
//跳转到截图界面
}
}
}, 1000);
break;
case REQUEST_CUT_PHOTO:
// 取得裁剪后的图片
if (data != null) {
setPicToView(data);
//保存和上传图片
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
返回图片后进行裁剪:
裁剪图片:
/**
* 裁剪图片方法实现
*/
private void startPhotoZoom(Uri uri) {
LogUtil.e("PersonalInformationActivity", "onActivityResult uri" + uri);
if (uri != null) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
// 下面这个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, REQUEST_CUT_PHOTO);
}
}
裁剪后保存和上传图片:
/**
*
保存裁剪之后的图片数据
*
* @param picdata
*/
private void setPicToView(Intent picdata) {
Bundle extras = picdata.getExtras();
if (extras != null) {
// 取得SDCard图片路径做显示
Bitmap photo = extras.getParcelable("data");
mSzImageFileName = Long.toString(System.currentTimeMillis()) + ".png";
mImgUrlPath = Environment.getExternalStorageDirectory() + File.separator + "cut_image" + File.separator + mSzImageFileName;
try {
NetUtil.saveBitmapToFile(photo, mImgUrlPath);
} catch (IOException e) {
e.printStackTrace();
}
//
新线程后台上传服务端
new Thread(uploadImageRunnable).start();
}
}
上传图片的线程:
Runnable uploadImageRunnable = new Runnable() {
@Override
public void run() {
Map<String, String> params = new HashMap<