先看下效果:
- 能实现马赛克画笔功能,并提供多种马赛克图案层叠测试
- 实现了重做,撤销功能
- 实现了对原图做处理功能,并不是失真保存图案
- 优化了处理时 CPU 占用太高问题
- 本项目只是作为一个 DEMO 演示,并不是一个控件封装。简单说下思路:使用
CAShapeLayer
与mask
实现实时马赛克预览, 使用core graphic
实现每一笔画完之后生成马赛克图。下面提供了思路具体实现文章,有兴趣同学可以自己封装一个控件使用。 - 另外,因为只是作演示做法,项目中的
撤销
与重做
功能,使用的是内存缓存。最好的做法其实就是每画完一笔,生成的原图马赛克,做沙盒储存,减少内存消耗!!