Android 系统自带图片裁剪功能(适配7.0、8.0、小米)

前段时间写了如何获取相册和拍照之后的照片并且进行显示和上传,这一次是如何进行圆形图像制作,经常看我写的笔记的人会知道,我很懒。那么我就懒的自定义了,目前需求就用原生的就好了,大神的轮子,我会在后面进行推荐。这篇笔记是依赖于:Android调用相册、相机(兼容6.0、7.0、8.0) 文章撰写的,所以不会基本操作的,请先去看看那个。

先上效果哈:
[系统自带的裁剪效果]

一、布局设置

由于是圆形头像,所以,我们引用一个举世闻名的项目哈:CircleImageView


 

布局没有太大变化,就是把之前的ImageView修改为CircleImageView控件

二、.java 文件

这里增加了两个方法

方法一

 

该方法,传入我们拿到的照片的 uri 进行激活 Android 系统的裁剪界面。我是在 onActivityResult 内进行调用该方法。

方法二

 

该方法 传入获取照片的 bitmap 和裁剪之后的照片名称,生成文件的保存路径,韩小呆将其保存在了本地的根目录了。

完整代码


 

当代码写成了这样,我以为就可以完事了,但是后来拿出来我的小米4和小米8se 测试的时候,我就懵逼了,出现了如下结果:

描述一下:
1、相册选择照片之后,只要进行裁剪就会出现“保存时发生错误,保存失败”;
2、就是拍照之后进行裁剪无效果。

三、解决bug

1、将 photoClip() 方法内添加如下代码,其他代码不进行变动


 

这里的 uritempFile 是个 Uri 。

2、将裁剪的返回成功的返回方法内添加如下代码:


 

然后,就可以完美的运行了。

四、推荐几款裁剪框架

1、[uCrop]()---薄荷,哔哩哔哩   在使用
地址:https://github.com/Yalantis/uCrop

2、[android-crop]()---网易新闻,芒果TV  在使用
地址:https://github.com/jdamcd/android-crop
https://github.com/Yalantis/uCrop

android-crop

3、PhotoCrop---快手 使用
地址:https://github.com/albinmathew/PhotoCrop

PhotoCrop

4、CropBitmap--->一位很牛x的大佬搞出来的
地址:https://github.com/zhongruiAndroid/CropBitmap

CropBitmap

—————END—————

 

作者: RESSRC

个人资源站

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据