Android拍照与相册图片裁剪功能实现
Android 拍照功能的权限适配、相册图片选取、裁剪再到最终保存,流程其实挺绕,但搞明白之后也就那回事。尤其从 Android 6.0 开始,权限管理变得麻烦,像CAMERA
和WRITE_EXTERNAL_STORAGE
这些,都得动态申,写不对直接崩。
用Intent.ACTION_IMAGE_CAPTURE
调起系统相机还挺省事,问题出在 Android 7 之后,返回的URI
突然就不一样了,要用FileProvider
才行,不然直接报错。
至于选相册图片,相册 Intent用ACTION_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
兜底。
,这一套流程虽然细节多,但逻辑还算清晰。你要是做头像上传、证件照这类功能,基本就靠这一套了。
19.22MB
文件大小:
评论区