fabric.js 开发图片编辑器可以实现哪些功能?多图 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
nihaojob
V2EX    程序员

fabric.js 开发图片编辑器可以实现哪些功能?多图

  •  
  •   nihaojob 2023-04-15 17:05:09 +08:00 2682 次点击
    这是一个创建于 911 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近使用 fabric.js 开发了一个图形编辑器并开源了,已收到 900+star ,很多开发者咨询 fabric.js 能实现哪些功能,今天就用文字加动图的形式直观的分享出来,帮助大家做参考。

    fabric.js 提供强大的底层能力,可实现自定义模板、素材、字体,图片滤镜、辅助线、组合、裁剪等功能,也提供了自定义元素等高级的用法

    项目: https://github.com/nihaojob/vue-fabric-editor

    预览: https://nihaojob.github.io/vue-fabric-editor/#/

    screenshot-20230415-142257.png

    画布功能

    画布属性:尺寸、预设大小、背景色。 支持修改画布尺寸,也有预常用预设的画布尺寸,可以便捷设置,有背景色修改属性,同时提供常用颜色的快捷修改。 20230415120741_rec_.gif

    画布缩放:放大、缩小、自动适应、鼠标滚轮缩放。 支持画布放大缩小操作,可按照 1:1 尺寸展示或自适应展示,页面窗口改变时会根据窗口大小自适应展示;滑动鼠标滚轮时可快捷缩放画布。

    20230415121804_rec_.gif

    20230415122049_rec_.gif

    其他细节:拖拽画布、画布区域外显示控制条。 画布支持拖拽操作,按住 alt 快捷键,可以拖动画布;当元素拖拽到画布外区域时,仍然展示控制条,但元素并不会被展示出来,所见即所得。 20230415122246_rec_.gif

    辅助功能

    控制条: 在满足元素缩放、旋转的基础上尽量让其简洁,提供了 2 种样式。 20230415123406_rec_.gif

    标尺: 标尺与辅助线可以满足我们更高要求的设计场景。 20230415123622_rec_.gif

    快捷调整: 图层管理、右键菜单、快捷键。 图层可以直观的定位元素的层级顺序,右键菜单提供了常用的快捷功能,还支持复制、删除等快捷键操作,提高操作效率。 20230415125124_rec_.gif

    基础元素

    字体元素: 字体元素有普通字体、框字体,框字体可调整外边框,自动换行。 20230415130158_rec_.gif

    基础形状: 有矩形、圆形、三角形、多边形,可直接点击或拖拽添加到画布。 20230415130303_rec_.gif

    线条元素: 支持箭头、线条元素绘制。 20230415131152_rec_.gif

    插入元素: 支持插入多种图片类型,图片图片、SVG 元素、SVG 字符串。 20230415130901_rec_.gif

    自定义素材: 素材在左侧分类展示,可定义图片素材、字体样式素材。 20230415131012_rec_.gif

    文件功能

    数据保存: 支持导出 /导出 JSON 文件方便存储数据,可自定义设计模板。 20230415131754_rec_.gif

    图片保存: 可清空画布、预览图片、保存图片文件。 20230415131852_rec_.gif

    属性设置

    基础操作: 所有元素都可以在属性面板调整透明度、坐标、旋转角度。 20230415133918_rec_.gif

    锁定与组合: 锁定元素后元素将不会收到其他操作影响;可将多个元素组合为一个组元素,也可以将组元素拆分为多个元素。 20230415132328_rec_.gif

    元素对齐: 单个元素支持相对于画布的水平、垂直、水平垂直居中,多个元素支持上、下、左、右对齐,水平居中、垂直居中、垂直平均分布、水平平均分布功能。 20230415132516_rec_.gif 自定义字体:可自定义字体、对齐方式、行高、背景色、下划线、删除线等信息。 image.png

    渐变配置: 渐变是设计的重要形式之一,支持为元素、字体设置渐变颜色。 image.png

    边框设置: 支持为元素增加边框样式。 20230415134137_rec_.gif

    图片操作: 快捷替换、简单滤镜、复杂滤镜。 20230415133617_rec_.gif

    20230415133505_rec_.gif

    总结

    fabric.js 的底层能力非常强大,这依赖于灵活的底层接口,但是太过灵活也有一个弊端,那就是我们必须掌握更多的细节才能用起来得心应手,这对于开发者来说并不会太轻松。

    vue-fabric-editor项目致力于打造一个开箱即用的 web 图片编辑器应用,同时沉淀一个介于 web 图片编辑器应用与 fabric.js 之间的封装层,期望封装层面向开发者设计,提供更简单的接口,让开发者可以轻松的实现图片应用开发

    邀请

    通过技术社区和开源的方式和大家相识是一种很奇妙的体验,大部分都是在使用 fabric.js 做项目的开发者,我们组建了 fabric.js 开发者交流群,一起抱团取暖互相支招,一边吐槽文档,一起实现功能,欢迎你的加入交流群。

    WechatIMG391.jpeg

    我们离目标还有很长的距离,如果你对这件事情感兴趣,真诚的邀请你加入,我们一起沉淀 fabric.js 的最佳实践,你会得到包括不限于以下列表的收获,你只要会简单的 Git 和 Javascript 语法就可以

    • 熟悉开源协作方式,成为项目贡献者。
    • Vue3 + TS 实践,边学边开发。
    • fabric.js 开发,边学边开发。
    • 入门单元测试,边学边开发。
    • 众多的 fabric.js 开发者交流。

    我自己是第一次搞开源项目,感谢项目的贡献者的帮助和社区的推动,这是一个很新的项目和社区,期待你的加入,希望我们一起边走边学,在未来一起成为知名开源项目的开发者

    海报.png

    10 条回复    2023-06-26 08:42:50 +08:00
    dudubaba
        1
    dudubaba  
       2023-04-15 18:38:33 +08:00
    体验了一下,不错。不过常用的富文本功能没实现,就是选中文本后可以对选中的文字加粗、配色等等,这一块涉及到富文本分词,可以研究一下加上。
    nihaojob
        2
    nihaojob  
    OP
       2023-04-15 18:51:57 +08:00
    @dudubaba 大佬好提示,后边研究一下。
    RabbitDR
        3
    RabbitDR  
       2023-04-15 21:50:32 +08:00
    我毕业设计就是用的 fabric.js,做 2D 地图
    nihaojob
        4
    nihaojob  
    OP
       2023-04-15 22:56:02 +08:00 via Android
    @RabbitDR 用 fabric.js 的开发者真的好多,但是他文档真的是好难读
    lau52y
        5
    lau52y  
       2023-04-16 20:04:52 +08:00 via iPhone
    支持 psd 么
    nihaojob
        6
    nihaojob  
    OP
       2023-04-16 20:13:35 +08:00 via Android
    @lau52y 不支持 psd
    yigemeirenyongde
        7
    yigemeirenyongde  
       2023-04-17 08:43:51 +08:00
    楼主咋不用 konva
    nihaojob
        8
    nihaojob  
    OP
       2023-04-17 21:42:29 +08:00 via Android
    @yigemeirenyongde 听你说没有 fabric 强大 没验证 哈哈
    yigemeirenyongde
        9
    yigemeirenyongde  
       2023-04-23 08:36:13 +08:00
    @nihaojob 我在用 konva 写, 十分头大, 想请教您一个问题:
    你 svg 是直接作为图片放入, 还是提取 path, cricle 等用 canvas 画出形状?
    sugars
        10
    sugars  
    PRO
       2023-06-26 08:42:50 +08:00
    泰裤辣
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     875 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:47 PVG 03:47 LAX 12:47 JFK 15:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86