废话不多说,直接上图
使用
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.OneZeroYang:EditImage:1.1.0'
}
详细使用方法见github
原理
代码细节我就不体现了,直接说点核心吧,大家都知道,可以通过Canvas绘制view
先创建一个Bitmap
val bitmap = Bitmap.createBitmap(
Math.round(frame.width()),
Math.round(frame.height()), Bitmap.Config.ARGB_8888
)
在创建一个Canvas 并传入这个 Bitmap
val canvas = Canvas(bitmap)
我们拿到canvas,就可以像绘制自定义view一样得去绘制Bitmap,最后我们再将这个Bitmap返回,就可以得到我们编辑好的图片,至于怎么去绘制自定义view,我相信网上都是烂大街了,那我就简单得讲讲:
涂鸦
我们在开发自定义view的时候,相信大家都知道有个东西叫path,他可以绘制路径,我们在触摸屏幕的时候,会触发onTouchEvent,这个时候我们就可以获取到相应的时间,从而的到路径,这不就绘制出来了吗?马赛克也是同样的道理,只是设置了不同的画笔风格而已,不在赘复。
剪裁、旋转
我们可以在图片的上层绘制一个剪裁框,完全可以通过计算,来确实用户得到用户选择的一些相关参数,例如位置,大小,最后通过矩阵进行相关的剪裁就好,旋转也是有相关api的,不要问我怎么用,我只能告诉你,谷歌官方文档真好用。
箭头
文字我就不说了,往自定义控件里面add一个view或者直接add一个TextView,箭头我是通过path来实现的,我们可以根据两个手指之间的距离,来得到箭头的长度、方向(角度)
直接上图吧
(图来源于网络哈)