使用 Kotlin Compose Desktop 开发的图像编
一. 背景
前段时间,我抽空用 Kotlin 开发了一款桌面端的图像编辑器,支持多平台。因为 Compose Desktop 本身支持多平台,所以这款图像编辑器可以支持 Mac 、Windows、Linux。
做这款工具的初衷是方便自己,这几年在工作上经常跟图像打交道,所以自己需要一款图形化的工具来对图片进行编辑或者快速尝试一下算法的效果。
二. 功能
图像编辑器——Monica,github 地址:https://github.com/fengzhizi715/Monica
Monica 依赖的技术:使用 Kotlin Compose 作为 UI,复杂的计算使用 Coroutines 处理,图像操作使用 BufferedImage 和卷积相关。除了使用自己写的一个缓存库,其他没有使用任何第三方库。对了,UI 风格参考了:https://github.com/equationl/TiltshiftHelper
当前这个版本,Monica 的主要功能包括:
- 提供加载本地图片、网络图片。
- 对图片局部模糊、打马赛克。
- 调整图片的饱和度、色相、亮度。
- 提供 20 款滤镜,大多数滤镜也可以单独调整参数。
- 对修改的图像进行保存。
- 放大、缩小图像。
支持加载本地的图片和网络的图片
1.png
图片加载后,可以开始对图片进行编辑。
2.png
使用基础功能,通过鼠标点击之后对指定的区域进行模糊处理。
3.png
使用基础功能,通过鼠标点击之后对指定的区域进行马赛克处理。
4.png
调整图像的饱和度、色相、亮度,也就是进行 HSL 调色。
5.png
Monica 支持多达 20 款滤镜,大多数可以自行调整参数。
6.png
如果需要修改滤镜的默认参数,修改完之后需要点击“应用参数”这个按钮,否则无法生效。
7.png 8.png 9.png 10.png
各种滤镜效果可以不断叠加,也可以跟 HSL 调色以及基础功能一起使用。
最后,还有一个比较基础的功能就是对图像的缩放,点击“放大镜”按钮会进入一个放大预览的界面。可以拖动图像,也可以对图像进行缩放。
11.png
三. Todo List && 一些思考
Monica 刚刚搭好一个架子,完成了 0.1 版本,后续会不断完善其功能。
Monica github 地址:https://github.com/fengzhizi715/Monica
完善的方向主要是:
- 由于大量使用 BufferedImage 类,需要重新封装一下。
- 增加绘画、添加文字的功能,增加用户和软件的交互。
- 增加对图像的裁剪,比如各种形状的裁剪。
- 增加一些有趣的滤镜。
- 优化部分算法,提高效率。
- 考虑增加人脸美颜的算法。
目前,Monica 完全使用 Kotlin 进行开发,不依赖于 OpenCV。最主要 Compose Desktop 不支持交叉编译,所以目前还没有使用 OpenCV。
后续如果需要使用复杂的算法,可能不得不使用 OpenCV 或者使用一些模型。另外,OpenCV 我也用了好几年,目前正在连载 OpenCV 系列的笔记。Monica 的很多滤镜及其原理可以在我的 OpenCV 系列的笔记里找到。
该系列的相关文章:
图像编辑器 Monica 之图像涂鸦、裁剪、有趣的滤镜