Flutter 之简洁实用的图片编辑器
介绍
一款简洁实用的图片编辑器,纯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();@overrideState<StatefulWidget> createState() {return ImageEditorState();}
}
保持相对绘制路径
为了获得更大的绘制区域,所以绘制面积并非为图片显示区域,这也就导致了旋转的时候,相对位置会有变化。如果你需要保持相对,可以控制绘制区域与图片显示区域保持一致即可。
参考及其他文章
地址
github仓库地址: image_editor_dove
插件地址:image_editor_dove
参考插件
signature | Flutter Package (flutter-io.cn)
其他文章
Flutter 之简洁实用的图片编辑器相关推荐
- 纯js分页代码(简洁实用)
纯js分页代码(简洁实用) 纯js写的分页代码. 复制代码代码如下: //每页显示字数 PageSize=5000; //分页模式 flag=2;//1:根据字数自动分页 2:根据[NextPage] ...
- FCPX插件-20个简洁实用数字倒计时计数器提示动画 mCounter
mCounter是一款适用于Final Cut Pro X的数字倒计时计数器提示动画插件,它提供了20种简洁实用的数字倒计时计数器提示动画,可以帮助用户更方便地制作倒计时和计数器相关的视频内容. mC ...
- 又一款简洁实用的个人博客系统
[公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天推荐的这个项目是「van-blog」,一款简洁实用优雅的高性能个人博客系统. VanBlog 支 ...
- 如何设计出简洁实用的APP开发交互界面?
关于APP开发界面设计UI交互设计效果,往往没有我们想得那么简单.进行APP开发时我们经常设计简单易用的APP界面,目的就是为了实现用户体验,随着用户的需求趋势,简单化成为APP开发界面设计的一个潮流 ...
- 【简洁实用】网络安全防护 网络安全 网络安全防御
原文:[简洁实用]网络安全防护 网络安全 网络安全防御 目录: 一.查看可疑端口 二.设置防火墙 三.关闭远程 四.关闭网络发现 五.安装杀毒软件 六.关闭自身防御 七.关闭文件共享 八.安全设置 九 ...
- 基于C开发一款简洁实用的Mp3播放器
C++ 音频编程:一款简洁实用的Mp3播放器源代码,只是实现基本的MP3文件播放.暂停.音量控制等功能,界面采用的传统窗体风格,核心代码在下载本源码后,可参考Mp3PlayerDlg.cpp文件. 项 ...
- 卸载 uniaccessagent 软件_电脑简洁实用的软件
让你的电脑简洁实用如果你的电脑有鲁大师.金山毒霸.电脑安全管家.快压.好压.WIN Rar.360浏览器(也好用,就是广告多).其他的浏览器等.统统卸载.卸载.(一个电脑最好不要出现两种不同的杀毒软件 ...
- 风琴html插件,简洁实用的BootStrap jQuery手风琴插件
前端 简洁实用的jQuery手风琴插件|DEMO_jQuery之家-自由分享jQuery.html5.css3的插件库 简洁实用的jQuery手风琴插件 A jQuery accordion plug ...
- VanBlog: 一款简洁实用优雅的高性能个人博客系统
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 今天推荐的这个项目是「van-blog」,一款简洁实用优雅的高性能个人博客系统. VanBlog 支持 HTTPS ...
最新文章
- 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
- CMake 条件判断
- linux下时间问题---date
- 你需要的是持续的服务改进
- [POJ2976] Dropping tests
- OpenCV立体校准stereo calib的实例(附完整代码)
- 各种Java实现的常用排序算法
- ASP连接各类数据库的语句
- C++11智能指针处理Array对象
- 【微软2014实习生及秋令营技术类职位在线測试】题目2 : K-th string
- Facebook算法swift实现
- 把txt 转换成CHM的目录或Index
- .net Stream篇(五)
- 青龙面板快s极速版(本地)
- angularJs 页面筛选标签小功能
- 矩阵分析与应用(一)——矩阵基础知识、广义逆
- 第五章 存储数据 web scraping with python
- 十一种通用滤波算法(转)
- STFT使用overlap-add重建信号
- TNT: Target-driveN Trajectory Prediction
热门文章
- 远程办公:如何提高自制力?
- 是利用计算机技术实现,计算机技术在智慧交通建设中的应用
- 关于日历实现代码里0x04bd8, 0x04ae0, 0x0a570的说明
- 第九届蓝桥杯c/c++A组省赛题解
- Ultra Edit:将Prt数据的导出到txt文件当中
- Java基础知识小练习合集
- odoo数据库主控密码采用什么加密算法?
- 解决使用Arduino IDE 下载esp8266开发版很慢的问题(支持任何版本)
- 【Code】Java 打印基本图形(圆形,梯形,椭圆,三角形,矩形)的面积和周长
- Ag Grid 表格树 Vue Data Grid: Tree Data