Android拍照与相册图片裁剪功能实现

Android 拍照功能的权限适配、相册图片选取、裁剪再到最终保存,流程其实挺绕,但搞明白之后也就那回事。尤其从 Android 6.0 开始,权限管理变得麻烦,像CAMERAWRITE_EXTERNAL_STORAGE这些,都得动态申,写不对直接崩。

Intent.ACTION_IMAGE_CAPTURE调起系统相机还挺省事,问题出在 Android 7 之后,返回的URI突然就不一样了,要用FileProvider才行,不然直接报错。

至于选相册图片,相册 IntentACTION_PICK或者ACTION_GET_CONTENT都可以,主要是返回的URI各种各样,要靠ContentResolver兜底。

裁剪功能不太推荐用系统自带的,兼容性实在太烂了。推荐上手第三方库,比如uCrop或者com.theartofdev.edmodo.cropper,好用还省事,控件自定义也多。

Android 10 之后对文件访问卡得更严,别忘了Scoped Storage这一坎。想要访问外部图片,记得用MediaStore配合insert()来搞,不然真会一脸懵。

裁剪完的图,用BitmapFactory读取再丢给ImageView显示,一般没啥问题。如果打算长期保存,bitmap.compress()搞成.jpg或者.png就行,注意别忘了加try-catch兜底。

,这一套流程虽然细节多,但逻辑还算清晰。你要是做头像上传、证件照这类功能,基本就靠这一套了。

rar 文件大小:19.22MB