Flutter简洁实用的图片编辑器的实现
作者:静水流深zz 时间:2021-10-31 08:30:44
介绍
一款简洁实用的图片编辑器,纯dart
开发。支持:涂鸦、旋转&翻转、马赛克、添加文字,及自定义ui风格。
功能演示
涂鸦
旋转&翻转
马赛克
添加文字及删除
安装
添加依赖
dependencies:
image_editor_dove: ^latest
import
import 'package:image_editor/flutter_image_editor.dart';
使用方法
获取到原图片后,将其传给ImageEditor
如下:
Future<void> toImageEditor(File origin) async {
return Navigator.push(context, MaterialPageRoute(builder: (context) {
return ImageEditor(
originImage: origin,
//可空,支持自定义存储位置(编辑后的图片)
savePath: customDirectory
);
})).then((result) {
if (result is EditorImageResult) {
setState(() {
_image = result.newFile;
});
}
}).catchError((er) {
debugPrint(er);
});
}
返回结果
///The editor's result.
class EditorImageResult {
///宽度
final int imgWidth;
///高度
final int imgHeight;
///编辑后的图片
final File newFile;
EditorImageResult(this.imgWidth, this.imgHeight, this.newFile);
}
拓展
UI定制
一些按钮、滑块等widget
支持自定义,可通过继承ImageEditorDelegate
来自定义ui风格:
class YourUiDelegate extends ImageEditorDelegate{
...
}
ImageEditor.uiDelegate = YourUiDelegate();
class ImageEditor extends StatefulWidget {
const ImageEditor({Key? key, required this.originImage, this.savePath}) : super(key: key);
...
///[uiDelegate] is determine the editor's ui style.
///You can extends [ImageEditorDelegate] and custome it by youself.
static ImageEditorDelegate uiDelegate = DefaultImageEditorDelegate();
@override
State<StatefulWidget> createState() {
return ImageEditorState();
}
}
保持相对绘制路径
为了获得更大的绘制区域,所以绘制面积并非为图片显示区域,这也就导致了旋转的时候,相对位置会有变化。如果你需要保持相对,可以控制绘制区域与图片显示区域保持一致即可。
参考及其他文章
地址
github仓库地址: image_editor_dove
插件地址:image_editor_dove
参考插件
signature | Flutter Package (flutter-io.cn)
来源:https://blog.csdn.net/ljq5945/article/details/122847252
标签:Flutter,图片编辑器
0
投稿
猜你喜欢
详解Docker学习笔记之搭建一个JAVA Tomcat运行环境
2022-09-03 02:26:06
Java concurrency线程池之线程池原理(二)_动力节点Java学院整理
2023-11-28 23:43:18
Java 图片与byte数组互相转换实例
2023-06-24 03:28:39
C#图表算法之无向图
2021-08-08 22:50:20
java使用@Scheduled注解执行定时任务
2021-09-16 08:37:16
Java RateLimiter的限流详解
2023-01-06 17:14:12
Java Scanner输入两个数组的方法
2022-06-07 08:21:20
unity使用射线实现贴花系统
2023-04-23 10:22:00
Android自定义顶部导航栏控件实例代码
2022-02-11 13:43:16
解决Android Studio xml 格式化不自动换行的问题
2021-09-10 06:15:42
Android开发自学路线图
2023-03-04 17:42:37
Android应用 坐标系详细介绍
2021-06-29 08:45:00
Androidstudio调用摄像头拍照并保存照片
2022-01-23 18:33:57
SuperSocket入门--Telnet服务器和客户端请求处理
2021-07-24 19:35:14
Android EditText 监听用户输入完成的实例
2022-06-22 18:41:54
java ssm框架实现分页功能的示例代码(oracle)
2021-10-31 01:14:40
C#生成单页静态页简单实例
2022-01-22 20:00:57
详解微信小程序 同步异步解决办法
2022-08-14 00:08:58
详解C#读写Excel的几种方法
2022-10-23 14:23:28
Spring FreeMarker整合Struts2过程详解
2023-03-01 00:30:52