从零开发一款图片编辑器Mitu-Dooring

本文详细介绍了如何从零开发一款名为Mitu的开源图片编辑器,该编辑器用于辅助H5编辑器H5-Dooring进行图像处理。作者以React为基础,结合fabric库实现图形库、属性编辑器、自定义图元控制器、预览、保存图片及模版保存等功能。文章通过具体的技术实现步骤,帮助读者理解图片编辑器的开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍

我们知道,为了提高企业研发效能和对客户需求的快速响应,现在很多企业都在着手数字化转型,不仅仅是大厂(阿里,字节,腾讯,百度)在做低代码可视化这一块,很多中小企业也在做,拥有可视化低代码相关技术背景的程序员也越来受重视。

我最近一直在做数据可视化和lowcode/nocode​相关的项目,针对我自己的工作经验和对lowcode/nocode的探索,也写了一系列低代码可视化搭建系列文章,今天我们继续来分享可视化相关的内容——可视化图片编辑器。

在分享过程中,我会以最近我写开源的一个项目Mitu为案例,仔细拆解它的实现过程。Mitu主要是辅助H5编辑器 H5-Dooring 做图像处理用的,大家也可以轻松基于它进行二次开发和扩展,变成更强大的图片编辑器。

接下来我就来带大家介绍和剖析一下这款开源图片编辑器 Mitu。

以上是图片编辑器的部分演示效果,我们可以通过拖拽重组的方式快速生成我们想要的图片,也能将图片保存为模版,以便后期复用。在项目开发之前我也设计了一个简单的原型,保证自己的开发方向不会跑偏,大家可以参考一下:

按照我一向的写作风格,我先列一下技术实现的大纲,以便大家有选择且高效率的阅读和学习:

  • 可视化编辑器项目搭建和技术选型
  • 图形库设计
  • 属性编辑器设计
  • 自定义图元控制器实现
  • 预览功能实现
  • 保存图片功能实现
  • 模版保存实现
  • 导入模版功能实现
  • 可视化图片编辑器后期规划

好了,话不多说,接下来开始我们的技术实现。

技术实现

项目搭建和技术选型

编辑器的实现思路和技术栈无关,这里我采用了 React​ 来实现,当然大家如果更喜欢 Vue​ 或者 sveltejs,也是没问题的,项目整体技术选型如下:

  • umi可扩展的企业级前端应用框架
  • React + Typescript
  • Antd前端组件库
  • fabric一个可以简化Canvas 程序编写的库
  • localStorage本地数据存储

当然在项目的实现过程中还有很多细节和思想,接下来我会一一和大家介绍。如果大家对 fabric 这个库不太熟悉也不用担心,我会通过具体功能的实现来带大家熟悉这个库。

在介绍下面的内容之前我们先安装一下 fabric ,然后初始化一个画布。

yarn add fabric

初始化一个画布:

import { fabric } from "fabric";
import { nanoid } from 'nanoid';
import { useEffect, useState, useRef } from 'react';

export default function IndexPage() {
    const canvasRef = useRef<any>(null);
    useEffect(() => {
        canvasRef.current = new fabric.Canvas('canvas');
        // 创建一个文本元素
        const shape = new fabric.IText(nanoid(8), {
             text: 'H5-Dooring',
             width : 60,
             height : 60,
             fill : '#06c',
             left: 30,
             top: 30
         })
        // 将文本元素插入画布
        canvasRef.current.add(shape);
        //
本设计将要实现的是一个单机图片浏览软件,从其目标功能及特点分析,将本软件功能划分如下: 可以打开BMP、PCX、TGA、JPEG及GIF图像。 不论打开的是上述图像中的哪一种,用户均能以其中的任意一种格式将其保存。 在查看一幅图像时,可以逐渐放大、缩小;可以直接调整图像显示大小到适合屏幕或恢复为原始状态;可以直接将显示大小调整为原图像的50%、75%、150%、200%。 在查看一幅图像时,可以对其进行顺时针90º、逆时针90º、180º旋转。 在查看一幅图像时,可以直接调用Windows画图程序打开并进行编辑或以系统默认关联的程序打开查看或编辑。 软件提供“上一张”、“下一张”的功能,即在打开一幅图像后,可以不再使用“打开”命令而用鼠标单击“上一张”按钮、“下一张”按钮或按键盘上的Page Up键、Page Down键直接浏览当前图片所在文件夹中的其他图片。 可以进行全屏幕浏览,并在全屏幕浏览时提供“幻灯片播放”的功能,自动显示当前文件夹下的所有图像。同时,在全屏幕浏览时,在屏幕右上角显示一个浮动工具条,提供“停止幻灯片播放”、“上一张”、“下一张”、“逐渐放大”、“逐渐缩小”、“适合屏幕大小”、“原始大小”及“退出全屏浏览”的功能。 按F11键可以进行全屏浏览、非全屏浏览的切换,同时,在进行全屏幕浏览时按ESC键也可以退出全屏状态。 在载入图片时,提供“从上往下”、“从下往上”、“从左往右”、“从右往左”、“左上进入”、“左下进入”、“右上进入”、“右下进入”、“马赛克”、“百叶窗”等显示效果,并且可以由用户选择是否使用及使用哪个效果,用户也可以选择让系统随机选择效果。 在查看图片时,用户也可以让软件随时显示“水平百叶窗”、“垂直百叶窗”、“马赛克”、“向上扫描”、“向下扫描”等效果。 在查看图片时,可以选择从当前目录中删除该图片,并将其放入系统回收站中。 在窗口的用户区右键单击鼠标,则弹出快捷菜单,显示常用的操作命令。 在查看图片时,标题栏显示当前打开的图片的文件名;状态栏从左到右依次显示图片的全路径、当前的显示比例、图片文件的大小(KB)、图像的大小、鼠标当前的坐标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值