在做上传图片到服务器时,需要去相册选择一张图片,可以获取到图片的路径和图片的文件名
private void initListener() {
// TODO Auto-generated method stub
imageButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Builder builder = new Builder(TreasurePulishActivity.this);
AlertDialog dialog = builder
.setTitle("选择相片")
.setItems(new String[] { "拍照", "相册" },
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
switch (which) {
case 0:// 拍照
Intent intentCamera = CameraAndPhotoLibUtil
.getPhoto(
TreasurePulishActivity.this,
MediaStore.ACTION_IMAGE_CAPTURE,
true);
startActivityForResult(
intentCamera,
REQUEST_CAMERA);
break;
case 1:// 相册
Intent intentPhoto = CameraAndPhotoLibUtil
.getPhoto(
TreasurePulishActivity.this,
Intent.ACTION_GET_CONTENT,
true);
startActivityForResult(intentPhoto,
REQUEST_PHOTOLIB);
break;
default:
break;
}
}
}).setCancelable(true).create();
dialog.show();
}
});
}
/** * 从系统相册,相机拍照获取图片 * * @param context * @param action * @return */ public static Intent getPhoto(Context context, String action, boolean isCut) { if (MediaStore.ACTION_IMAGE_CAPTURE.equals(action)) {// action is 相机 Intent intent = new Intent(action); // 讲拍得的照片保存在本地 Uri imageUri = Uri.fromFile(new File(Environment .getExternalStorageDirectory(), "image.jpg")); // 指定照片保存路径(SD卡),image.jpg为一个临时文件,每次拍照后这个图片都会被替换 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); return intent; } if (Intent.ACTION_GET_CONTENT.equals(action)) { /*if (isCut) { //用这种方法,onActivityResult方法的uri为null Intent intent = new Intent(action); intent.setType("image/*"); // 获取任意图片类型 intent.putExtra("crop", "true"); // 滑动选中图片区域 intent.putExtra("aspectX", 1); // 裁剪框比例1:1 intent.putExtra("aspectY", 1); intent.putExtra("outputX", 60); // 输出图片大小60,60 intent.putExtra("outputY", 60); //intent.putExtra("return-data", true); // 有返回值 return intent; } else {*/ Intent intent = new Intent(action); intent.setType("image/*"); // 获取任意图片类型 return intent; //} } return null; }
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { Log.e("error", "ActivityResult resultCode error"); return; } switch (requestCode) { case REQUEST_CAMERA:// 拍照 Uri imageUri = data.getData(); Intent intentCut = CameraAndPhotoLibUtil.cropImageUri(imageUri, 60, 60); startActivityForResult(intentCut, REQUEST_CUT); break; case REQUEST_PHOTOLIB:// 相册 Uri uri = data.getData(); ContentResolver resolver = getContentResolver(); Bitmap bmPhoto = null; try { bmPhoto = MediaStore.Images.Media.getBitmap(resolver, uri); String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery(uri, proj, null, null, null); //获得用户选择的图片的索引值 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); //将光标移至开头 ,这个很重要,不小心很容易引起越界 cursor.moveToFirst(); //最后根据索引值获取图片路径 String path = cursor.getString(column_index); //String imgpath = FileUtils.getSDPath() + File.separator + "nanfangyoudao"; //图片编码后的字符串 String uploadBuffer = FileUtils.Base64ImgUrl(path); //文件名 String fileName = StringUtils.getFileName(path); UploadImgTask upImgTask = new UploadImgTask(); upImgTask.execute(fileName,uploadBuffer); Log.i("path=", path); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Bitmap bmPhoto = (Bitmap) data.getExtras().get("data"); imageButton.setImageBitmap(bmPhoto); break; case REQUEST_CUT:// 裁剪 Bitmap bmCut = (Bitmap) data.getExtras().get("data"); imageButton.setImageBitmap(bmCut); break; default: break; } };