介绍

一款简洁实用的图片编辑器,纯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 之简洁实用的图片编辑器相关推荐

  1. 纯js分页代码(简洁实用)

    纯js分页代码(简洁实用) 纯js写的分页代码. 复制代码代码如下: //每页显示字数 PageSize=5000; //分页模式 flag=2;//1:根据字数自动分页 2:根据[NextPage] ...

  2. FCPX插件-20个简洁实用数字倒计时计数器提示动画 mCounter

    mCounter是一款适用于Final Cut Pro X的数字倒计时计数器提示动画插件,它提供了20种简洁实用的数字倒计时计数器提示动画,可以帮助用户更方便地制作倒计时和计数器相关的视频内容. mC ...

  3. 又一款简洁实用的个人博客系统

    [公众号回复 "1024",免费领取程序员赚钱实操经验] 大家好,我是章鱼猫. 今天推荐的这个项目是「van-blog」,一款简洁实用优雅的高性能个人博客系统. VanBlog 支 ...

  4. 如何设计出简洁实用的APP开发交互界面?

    关于APP开发界面设计UI交互设计效果,往往没有我们想得那么简单.进行APP开发时我们经常设计简单易用的APP界面,目的就是为了实现用户体验,随着用户的需求趋势,简单化成为APP开发界面设计的一个潮流 ...

  5. 【简洁实用】网络安全防护 网络安全 网络安全防御

    原文:[简洁实用]网络安全防护 网络安全 网络安全防御 目录: 一.查看可疑端口 二.设置防火墙 三.关闭远程 四.关闭网络发现 五.安装杀毒软件 六.关闭自身防御 七.关闭文件共享 八.安全设置 九 ...

  6. 基于C开发一款简洁实用的Mp3播放器

    C++ 音频编程:一款简洁实用的Mp3播放器源代码,只是实现基本的MP3文件播放.暂停.音量控制等功能,界面采用的传统窗体风格,核心代码在下载本源码后,可参考Mp3PlayerDlg.cpp文件. 项 ...

  7. 卸载 uniaccessagent 软件_电脑简洁实用的软件

    让你的电脑简洁实用如果你的电脑有鲁大师.金山毒霸.电脑安全管家.快压.好压.WIN Rar.360浏览器(也好用,就是广告多).其他的浏览器等.统统卸载.卸载.(一个电脑最好不要出现两种不同的杀毒软件 ...

  8. 风琴html插件,简洁实用的BootStrap jQuery手风琴插件

    前端 简洁实用的jQuery手风琴插件|DEMO_jQuery之家-自由分享jQuery.html5.css3的插件库 简洁实用的jQuery手风琴插件 A jQuery accordion plug ...

  9. VanBlog: 一款简洁实用优雅的高性能个人博客系统

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 今天推荐的这个项目是「van-blog」,一款简洁实用优雅的高性能个人博客系统. VanBlog 支持 HTTPS ...

最新文章

  1. 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
  2. CMake 条件判断
  3. linux下时间问题---date
  4. 你需要的是持续的服务改进
  5. [POJ2976] Dropping tests
  6. OpenCV立体校准stereo calib的实例(附完整代码)
  7. 各种Java实现的常用排序算法
  8. ASP连接各类数据库的语句
  9. C++11智能指针处理Array对象
  10. 【微软2014实习生及秋令营技术类职位在线測试】题目2 : K-th string
  11. Facebook算法swift实现
  12. 把txt 转换成CHM的目录或Index
  13. .net Stream篇(五)
  14. 青龙面板快s极速版(本地)
  15. angularJs 页面筛选标签小功能
  16. 矩阵分析与应用(一)——矩阵基础知识、广义逆
  17. 第五章 存储数据 web scraping with python
  18. 十一种通用滤波算法(转)
  19. STFT使用overlap-add重建信号
  20. TNT: Target-driveN Trajectory Prediction

热门文章

  1. 远程办公:如何提高自制力?
  2. 是利用计算机技术实现,计算机技术在智慧交通建设中的应用
  3. 关于日历实现代码里0x04bd8, 0x04ae0, 0x0a570的说明
  4. 第九届蓝桥杯c/c++A组省赛题解
  5. Ultra Edit:将Prt数据的导出到txt文件当中
  6. Java基础知识小练习合集
  7. odoo数据库主控密码采用什么加密算法?
  8. 解决使用Arduino IDE 下载esp8266开发版很慢的问题(支持任何版本)
  9. 【Code】Java 打印基本图形(圆形,梯形,椭圆,三角形,矩形)的面积和周长
  10. Ag Grid 表格树 Vue Data Grid: Tree Data