获取相册的某一张图片的路径

在做上传图片到服务器时,需要去相册选择一张图片,可以获取到图片的路径和图片的文件名

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;
		}
	};



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值