Intent拍照,从相册中选取

Intent拍照

<span style="font-size:18px;">String photoPath = "";
public void doTakePhoto() {
	Intent intent = new Intent(			android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
	File parent = FileUitlity.getInstance(this).makeDir("jredu_head");
	// 路径
	photoPath = parent.getPath() + File.separator
				+ System.currentTimeMillis() + ".png";
	intent.putExtra(MediaStore.EXTRA_OUTPUT,
				Uri.fromFile(new File(photoPath)));
	startActivityForResult(intent, TAKE_FROM_CAPTURE);
}</span>

从相册中选取

<span style="font-size:18px;color:#333333;">public void doPhonePhoto() {
	Intent intent = new Intent(Intent.ACTION_PICK);
	intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
	startActivityForResult(intent, TAKE_FROM_ALBULE);
	}</span>

裁剪方法:

public void startPhotoZoom(Uri uri) {
	Intent intent = new Intent("com.android.camera.action.CROP");
	intent.setDataAndType(uri, "image/*");
	// 设置裁剪
	intent.putExtra("crop", "true");
	// aspectX aspectY 是宽高的比例
	intent.putExtra("aspectX", 1);
	intent.putExtra("aspectY", 1);
	// outputX outputY 是裁剪图片宽高
	intent.putExtra("outputX", 150);
	intent.putExtra("outputY", 150);
	intent.putExtra("return-data", true);
	startActivityForResult(intent, RESULT_PHOTO);
}

重写onActivityResult()方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {	
	super.onActivityResult(requestCode, resultCode, data);
	if (resultCode != RESULT_OK) {
		return;
	}
	switch (requestCode) {
	case TAKE_FROM_CAPTURE:
			//裁剪
		startPhotoZoom(Uri.fromFile(new File(photoPath)));
		break;
	case TAKE_FROM_ALBULE:
	Cursor cursor = this.getContentResolver().query(data.getData(),new String[] { MediaStore.Images.Media.DATA }, null, null,
					null);
		cursor.moveToFirst();
		photoPath = cursor.getString(cursor
					.getColumnIndex(MediaStore.Images.Media.DATA));
		cursor.close();
		//裁剪
		startPhotoZoom(Uri.fromFile(new File(photoPath)));
//			image.setImageURI(Uri.fromFile(new File(photoPath)));
		break;
	case RESULT_PHOTO:
		Bundle bundle=data.getExtras();
		if(bundle!=null){
			Bitmap b=bundle.getParcelable("data");
			image.setImageBitmap(b);//展示
		}
		break;
	}
}

拍照需要权限

<uses-permission android:name="android.permission.CAMERA"/>
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>



Android平台上,实现拍照或从相册选取图片上传多张可以通过以下步骤实现。首先,需要在AndroidManifest.xml文件添加相机和存储权限。接着,在相应的Activity,我们可以使用Intent来启动系统相机应用,或者打开系统相册应用。 如果是拍照上传,我们可以创建一个Intent对象,指定Action为MediaStore.ACTION_IMAGE_CAPTURE,然后使用startActivityForResult方法启动相机应用。拍摄完成后,系统会将照片保存在指定的URI路径上。 如果是从相册选取图片上传,我们同样可以创建一个Intent对象,指定Action为Intent.ACTION_PICK,Type为“image/*”,然后使用startActivityForResult方法启动相册应用。 接着,在onActivityResult方法,我们可以根据requestCode和resultCode来判断是从相机还是相册返回的数据。如果是从相机返回的数据,我们可以通过指定的URI路径来获取拍摄的照片;如果是从相册返回的数据,我们可以通过data.getData()方法来获取选取的图片。 最后,我们可以将获取到的照片进行上传操作,可以是将图片转换成Bitmap对象,然后上传至服务器;或者将图片的URI路径传递给服务器进行上传。如果有多张图片需要上传,可以采用循环的方式依次处理每张图片。 总的来说,实现拍照或从相册选取图片上传多张,需要通过Intent调用系统应用获取图片,然后在onActivityResult方法处理返回的数据,最后进行图片的上传操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值