Media._ID + "=? ", new String[] { fileUri.toString() }, null); if (cursor != null) { cursor.moveToFirst(); int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media._ID)); Uri selectedImageUri = ContentUris.withAppendedId(imgUri, id); Bitmap bitmap = MediaStore.Images.Media.getBitmap(cr, selectedImageUri); // 对图片进行裁剪 cropImage(selectedImageUri); cursor.close(); } break; } super.onActivityResult(requestCode, resultCode, data); } private void cropImage(Uri imageUri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(imageUri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); intent.putExtra("return-data", true); startActivityForResult(intent, 2); } @Override protected void onDestroy() { super.onDestroy(); if (mCurrentPhotoFile != null && mCurrentPhotoFile.exists()) { mCurrentPhotoFile.delete(); } } private String getPhotoFileName() { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); return sdf.format(date) + ".jpg"; } 在Android编程中,实现系统图片剪裁涉及到多个关键步骤。你需要创建一个Intent来启动相机应用,以便用户可以拍摄或选择图片。这可以通过调用`Intent("android.media.action.IMAGE_CAPTURE")`来完成。在Intent中,你可以设置`EXTRA_OUTPUT`来指定图片保存的位置,这样拍摄的照片就会被直接保存到你指定的路径,而不是默认的相机应用相册。 当用户拍摄完照片后,你需要重写`onActivityResult()`方法来处理返回的结果。这里,你需要检查请求码,如果是1,那么表示相机应用已经返回,你可以通过ContentResolver查询新拍摄的照片,并将其转换为Bitmap对象。然后,你可以调用`cropImage()`方法对图片进行裁剪。 `cropImage()`函数中,创建了一个新的Intent,这次是用于启动图片裁剪应用。设置数据源为待裁剪的图片Uri,指定裁剪参数如输出尺寸(outputX, outputY)、宽高比例(aspectX, aspectY)以及是否缩放图片。同时,我们还需要指定裁剪后的图片输出Uri以及是否返回裁剪后的数据。 裁剪完成后,再次调用`onActivityResult()`,此时请求码为2,你可以获取裁剪后的Bitmap,并显示在ImageView中。别忘了在Activity销毁时清理临时文件,防止内存泄漏。 这个例子展示了Android中如何集成相机功能并实现图片剪裁,这对于需要在应用中处理用户上传图片的场景非常有用。通过这种方式,用户不仅可以拍摄照片,还能按照应用的需求对其进行裁剪,提供更加个性化的体验。在实际开发中,你可能需要根据不同的设备和API版本进行兼容性处理,确保功能在各种环境下都能正常工作。
- 粉丝: 2
- 资源: 961
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Qt和深度学习的目标检测及周界预警系统.zip
- (源码)基于Arduino和RaspberryPi的LED面板控制系统.zip
- (源码)基于SpringBoot框架的学生信息管理系统.zip
- JAVA的SpringBoot自动化立体智慧仓库WMS管理系统源码数据库 MySQL源码类型 WebForm
- (源码)基于先进编程技术的机器人手臂控制系统.zip
- (源码)基于SpringBoot和SpringCloud的餐饮管理系统.zip
- (源码)基于C++和Qt框架的嵌入式PC系统.zip
- java物联网智能开关平台源码(含服务端、硬件端、安卓端)数据库 MySQL源码类型 WebForm
- (源码)基于LoRaWAN的智能灌溉系统.zip
- (源码)基于PyTorch的手写数字识别系统.zip