
正文
Android 拍照、从相册获取及裁剪的相关实现
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
首先这些功能都是通过Intent去启动系统的服务去实现的,所以自然就有相应的Action。相关Actiong如下:
拍照——MediaStore.ACTION_IMAGE_CAPTURE ("android.media.action.IMAGE_CAPTURE")
相册——Intent.ACTION_GET_CONTENT("android.intent.action.GET_CONTENT" 同时要设置,intent.setType("image/*");)
裁剪——"com.android.camera.action.CROP"(需要设置图片来源 intent.setDataAndType(uri, "image/*"); )
而下面表格中的参数则是在发送Intent时,添加一些额外的数据约束实现以下额外的功能
| 附加选项 | 数据类型 | 描述 |
| crop | String |
发送裁剪信号
|
| aspectX | int |
X方向上的比例
intent.putExtra(
"aspectX"
, 1);
|
| aspectY | int |
Y方向上的比例
intent.putExtra(
"aspectY"
, 1);
|
| outputX | int |
裁剪区的宽
intent.putExtra(
"outputX"
, 240);
|
| outputY | int |
裁剪区的高
intent.putExtra(
"outputX"
, 320);
|
| scale | boolean |
是否保留比例
intent.putExtra(
"scale"
, true);
|
| return-data | boolean |
是否将数据保留在Bitmap中返回
intent.putExtra(
"return-data"
, true);
|
| data | Parcelable |
相应的Bitmap数据
intent.putExtra(
"data"
, imgaeUri);
|
| circleCrop | boolean |
圆形裁剪区域
intent.putExtra(
"circleCrop"
, true);
|
| MediaStore.EXTRA_OUTPUT ("output") | URI |
将URI指向相应的file:///... intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); |
| outputFormat | String | 输出格式 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); |
| noFaceDetection | boolean | 是否取消人脸识别功能 intent.putExtra("noFaceDetection", true); |
又因为这些操作都是需要结果返回的,所以都是使用 startActivityForResult 来进行Intent的发送,然后在本Activity进行接收处理。






