实战fabric.js教程及API

前端开源的canvas工具库Fabric.js / 创建自定义箭头对象},// 绘制箭头头部ctx.save();ctx.fill();});// 添加到画布});// 添加自定义控制点x: 0.5,y: -0.5,// 自定义处理逻辑},// 自定义渲染},}); 阅读详情

先看效果:

项目介绍:

整个页面是一个vue项目中的组件,使用的主要库是fabricjs  官网为http://fabricjs.com/ 是一个操作canva和svg的库

文档为英文的.

后台系统是nodejs+express 涉及到上传图片 session mongodb

用户表 图库表 设计表,

前端上传组件时ivew的 

Upload

后端使用的是

multer

可以说麻雀虽小,五脏俱全 前后端分离,使用mongodb数据库 图片上传到文件夹内

实现的效果:

整个页面包含的功能点有

1:上传图片 可旋转,扩大,缩小,删除,拖动

2:选取图片导入 批量上传,可以上传到自己的图库

3:保存拼图 导出我的设计,生成缩略图,可以导入以前的数据

4:导入我的拼图

5:改变背景 可以使用背景图片,也可以使用颜色

遇到的问题:

  1. 双击删除的功能,获取当前事件的对象并获取在整体中的索引,删除.
  2. canva无法生成png图片 报错 

第一个问题是 如此解决的

        this.fabricCvs.on('mouse:dblclick', (e) => {
          this.fabricCvs.remove(
            this.fabricCvs.item(
              this.fabricCvs.getObjects().indexOf(e.target)
            )
          )
        })

 

remove: 删除一个对象 参数为数组的索引

item:获取一个对象在数组中的索引

第二个问题是 由于canvas上对于引入的图片有跨域的限制,不能转化外域的图片数据

解决办法是在引入图片的时候 设置

crossOrigin: 'anonymous'
          fabric.Image.fromURL(selectedArr[i].imgUrl, (oImg) => {
            oImg.scale(0.5)//图片缩小10倍
            this.fabricCvs.add(oImg)
          }, {crossOrigin: 'anonymous'})

主要用的api:

remove item getObjects

Image.fromURL   更加url生成一个图片对象
add  添加对象
getSelectionContext  获取选中内容
clear  清空内容
setBackgroundColor  设置背景颜色 背景图
renderAll  重新渲染
toDataURL  转化成base64
loadFromJSON 转化为json

学到的东西:

图片批量上传,

multer包的使用
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/upload')
  },
  filename: function (req, file, cb) {
    var str = file.originalname.split('.')
    cb(null, Date.now() + '.' + str[1])
  }
})
var upload = multer({storage: storage})

// 上传图片到图片仓库并返回上传的图片路径
router.post('/uploadImgs', upload.array('file', 20), function (req, res, next) {
  var arr = []
  for (var i in req.files) {
    arr.push(global.SERVICEADDRESS + '' + req.files[i].filename)
  }
  res.json({
    code: 200,
    data: arr
  })
})

 

mongodb对于数组的批量插入操作

 

 pictureStore.updateOnePictureStore({_id: req.body.storeId}, {$addToSet: {pictureUrlArr: {$each: pictureUrlArr}}}, (err, data) => {
      if (!err) {
        return RETURNSUCCESS(res, data)
      } else {
        return RETURNFAIL(res, err)
      }
    })

 

fabric.js API的使用 以及能实现的功能预览

谢谢阅读.如果觉得对你有帮助请记得点赞或收藏.欢迎留言讨论.你的支持是我出产优秀博客的动力.

 

请尊重他人劳动成果, 如需转载,请私信我,禁止私自转载

Fabric.js 中文文档 Fabric.js 是一个功能强大的 canvas 库,它提供了一套丰富的 API 来操作 canvas 元素和上面的对象。通过配置项、方法和事件,开发者可以轻松地在网页上实现复杂的图形和交互设计。上述文档简要介绍了 Fabric.js 的一些基本用法和配置,更多高级功能和细节请参考官方文档。 阅读详情

相关推荐

fabricjs 插件使用

我将向您介绍Fabric.js —一个功能强大JavaScript库,可以轻松处理HTML5 canvas元素。 Fabric为画布提供了丢失的对象模型,以及SVG解析器,交互性层和一整套其他必不可少的工具。

长路漫漫其修远兮 4033

Fabric.js

Fabric.js是什么 Fabric.js 是一个简化HTML5 Canvas开发的Javascript库,Fabric.js提供了HTML5 Canvas本身缺失的对象模型、交互层、SVG解析器以及其他一整套工具。它是一个完全开源的项目,在MIT下获得授权,多年来一直在维护,近期要发布4.0版本,支持自定义controls。 Fabric.js能做什么 在Canvas画布上创建、填充图形(包括图片、文字、规则图形和复杂路径组成图形)。 给图形填充渐变颜色。 组合图形(包括组合图形、图形文字、图片等)。

qq_40407998的博客 2万+

vue2+Fabric.js库的使用(1)--Fabric的介绍

基于vue2+Fabric.js进行项目搭建,开发图形编辑器

M_lucklu的博客 3309

fabric.js 中文教程第一部分

fabric.js基础概念,fabric.js入门

sj_wl的博客 1万+

fabricjs中文API

fabric.js是一个强大而简单的Javascript HTML5画布上library Fabric在画布元素之上提供交互式对象模型 Fabric也有SVG-to-canvas(以及canvas到svg)解析器 这里是一些Fabric中文api显示

基于Kubernetes的ML平台架构设计

本文在Kubernetes开源组件的基础上,对ML平台各部分组件的作用进行了介绍,并且进行了组件选型,初步设计了ML平台的技术架构。

2401_83124266的博客 2052

js 数组 实现 完全树_实战fabric.js教程及API

先看效果:项目介绍:整个页面是一个vue项目中的组件,使用的主要库是fabricjs 是一个操作canva和svg的库文档为英文的.后台系统是nodejs+express 涉及到上传图片 session mongodb用户表 图库表 设计表,前端上传组件时ivew的 Upload后端使用的是multer可以说麻雀虽小,五脏俱全 前后端分离,使用mongodb数据库 图片上传到文件夹内实现的效果:整...

weixin_39662462的博客 181

LS-DYNA中的流固耦合

在LS-DYNA中对流固耦合问题的求解提供了两种方法,ALE流固耦合和基于ICFD的流固耦合。本文将对两种方法的各自特点进行分析。 ALE方法的流固耦合 适用范围 ALE求解器主要用于层流。ALE求解器也不是完全的NS求解器,因此不考虑边界层的影响,比如阻力。流体粘性效应仅通过材料模型获得,也就是*mat_null的MU。ale求解器是为了求解高压高速度梯度的短时问题而开发的。该求解器并不适用于求解低压力梯度问题比如声学,也不适用于长时间问题(秒的尺度甚至更长)。时间的限制是显式时...

m0_69812055的博客 8557

Canvas Fabric.js库 中文文档API 教程(一)

出处:https://github.com/kangax/fabric.js/ Fabric.js介绍 第一部分 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBogTRm8-1587816937914)(https://github.com/kangax/fabric.js/raw/master/lib/screenshot.png)] 今天我开始像您介绍F...

weixin_44642182的博客 6353

PLC模糊控制模糊PID(梯形图实现+算法分析)

博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-优快云博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容水箱的模糊PID问题做详细讲解(包括所有源代码和模糊规则设置参数)。

RXXW_Dor的博客 5888

eDP V1.4协议介绍

eDP的全称是Embedded DisplayPort嵌入式显示端口,主要应用与短距离系统内应用,例如手机、一体式台式机等。eDP V1.4b是基于DP V1.3标准制作完成,但因应用场景的不同,还是有很多区别。电压摆幅不同,eDP相对较低;eDP功耗相对较低;DP有线材和连接器的要求,eDP没有明确要求;AUX通道电路设计不同(相对DP取消了AC耦合电容和100KΩ/1MΩ的上下拉电阻):典型应用场景;

qflook的博客 4303

Fabric.js 绘制图形 API 完全指南

Fabric.js 提供了一组强大的 API,用于绘制和操作各种图形对象。通过掌握这些 API 和参数,开发者可以创建丰富的图形应用。本文介绍了 Fabric.js 中所有的绘制图形 API 及其参数,希望能帮助您更好地使用 Fabric.js 进行开发。

前端程序猿的博客 2184

家用扫地机器人研发技术路线-第四部分:如何一步步做出来 | 4阶段 · 从原型到量产

摘要:本文详细介绍了扫地机器人从原型到量产的研发流程,分为4个关键阶段。首先聚焦四大技术难点:SLAM定位、AI视觉识别、仿生机械臂和静音风机系统。研发过程包括实验室原型验证、工程样机测试、小批量真实场景测试和量产导入四个阶段,每个阶段设有严格评审标准。特别强调测试贯穿全程,包括模块单元测试、整机集成测试、长期可靠性测试和多样化场景模拟,确保产品在上市前完成数百次真实环境验证。整个流程体现了从技术攻关到产品落地的系统性工程思维。

智能硬件研发,欢迎交流 193

Fabric.js 图片编辑器教程

Fabric.js 图片编辑器教程 1. 项目介绍 Fabric.js 是一个强大的 JavaScript HTML5 Canvas 库,提供了交互式的对象模型,使得在 Canvas 上创建和操作图形对象变得非常简单。Fabric.js 还支持 SVG 到 Canvas 的转换,以及 Canvas 到 SVG 的转换。通过 Fabric.js,你可以轻松创建和操作简单的几何图形、复杂的图形路径,甚...

gitblog_00780的博客 1084

基于Matlab模拟六自由度Stewart并联机器人运动学逆解

在现代工业和科学领域中,机器人技术的发展已经取得了巨大的进步,为生产和研究提供了许多便利。其中,六自由度Stewart并联机器人是一种广泛应用于各种领域的机器人系统。它具有高精度、高刚度和高可靠性的特点,被广泛应用于飞行模拟器、手术机器人和运动仿真等领域。然而,要使Stewart并联机器人能够实现复杂的运动任务,我们需要了解其运动学逆解。运动学逆解是指根据机器人末端执行器的位置和姿态,计算出各个关节的角度和长度。这对于控制机器人的运动非常重要,因为它可以帮助我们确定机器人各个关节的运动范围和工作空间。

qq_59747472的博客 1128

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

算法大师! 721

fabric.js 中文教程第四部分

fabri.jc中文教程第四部分,介绍了自由绘制,自定义,在Node上使用fabric.js等功能

sj_wl的博客 5227

如何在 R 中执行 Kruskal-Wallis 检验

Kruskal-Wallis 检验用于确定三个或更多独立组的中位数之间是否存在统计学上的显着差异。它被认为是单向方差分析的非参数等效项。本教程介绍了如何在 R 中执行 Kruskal-Wallis 检验。示例:R 中的 Kruskal-Wallis 检验 假设研究人员想知道三种不同的肥料是否会导致不同水平的植物生长。他们随机选择 30 种不同的植物并将它们分成三组,每组 10 株,每组施用不同的肥料。在一个月结束时,他们测量每株植物的高度。使用以下步骤执行 Kruskal-Wallis 检验以确定三个组的中

Mrrunsen的博客 3800

fabric.js学习

1.fabric[ˈfæbrɪk']是一个功能强大的运行在的JavaScript库,。fabric为canvas提供了一个交互式对象模型,通过简洁的api就可以在画布上进行丰富的操作。3.在使用过程发现文档阅读比较困难,因此自己在写的时候顺便总结一下,便于后续参考。

过客如期的博客 9816

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Fabric.js部分事件及api

fabicjs

XinYiMiao__优快云的博客 1735

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Hyperledger Fabric Rest API服务开发教程【含源码】

Hyperledger Fabric Rest API服务开发教程【含源码】 Hyperledger Fabric 提供了软件开发包/SDK以帮助开发者访问fabric网络 和部署在网络上的链码,但是Hyperledger Fabric官方没有提供简单易用的REST API访问接口,在这个教程里我们将学习如何利用Hyperledger Fabric的SDK 来开发REST API服务器。 ...

周红伟讲AI 8770

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Fabric.js中fabric.Image的深入解析

Fabric.js作为一个功能强大的Canvas库,提供了丰富的API来处理图形和图像。提供了丰富的属性和方法,允许开发者在画布上创建、编辑和样式化图像对象。提供了一系列的属性和方法,用于控制图像的外观和行为,如尺寸、位置、旋转、缩放、裁剪等。首先,在HTML文件中引入Fabric.js库,并创建一个Canvas元素。,包括其API函数定义和代码示例解释,帮助开发者更好地理解和使用这个类。是Fabric.js中用于创建和管理图像对象的类。类,以便在你的项目中实现更丰富的图像处理功能。接下来,我们可以使用。

2306

fabric-history 的安装和配置教程

fabric-history 的安装和配置教程 1. 项目的基础介绍和主要的编程语言 fabric-history 是一个开源项目,旨在为用户提供一种查看和浏览 fabric.js 项目的历史记录的解决方案。fabric.js 是一个强大的、简单且直观的 JavaScript HTML5 画布库,它提供了一套完整的交互对象模型,允许用户轻松创建和操作画布上的对象。fabric-history 的主...

gitblog_00744的博客 357

Fabric.js 文档

Fabric.js 是一个可以简化 Canvas 程序编写的库。 Fabric.js 为 Canvas 提供所缺少的对象模型,svg parser,交互和一整套其他不可或缺的工具。由于 Fabric.js 为国外框架,官方 API 杂乱繁多,相关文档大多为英文文档,而且数量不多,所以本文旨在帮助新手在项目中快速上手 Fabric.js,享受绘制Canvas的过程。 为什么要使用Fabric.js? Canvas 提供一个好的画布能力,但是 Api 不够友好。绘制简单图形其实还可以,不过做一些复杂的图形绘

江湖行骗老中医 1万+

Fabric.js 3个api设置画布宽高

本文简介 使用 Fabric.js 创建画布时,可以在参数里配置画布的宽高。 除了初始化时设置之外,Fabric.js 还提供了其他 api 供后期修改画布宽高。 本文列举了 Fabric.js 的3个 api 设置画布宽高。 这3个 api 虽然简单,但在实际开发中可能很重要。比如监听浏览器窗口缩放,动态调整画布的宽高。 如果想入门 Fabric.js 可以看 《Fabric.js从入门到膨胀》 环境说明 Chrome浏览器版本:96.0.4664.45 Fabric.js版本:4.6.0

weixin_39415598的博客 3579

Fabric.js中fabric.Text的深入解析

是Fabric.js中用于表示文本对象的类。它允许开发者在画布上创建、编辑和样式化文本。提供了一系列的属性和方法,用于控制文本的外观和行为,如字体、大小、颜色、对齐方式、行高、文本装饰等。text(String): 要显示的文本内容。options(Object): 可选参数,用于设置文本的初始属性,如字体、大小、颜色等。通过本文的深入解析,我们了解了Fabric.js中对象的基本概念、API函数定义以及代码示例。提供了丰富的属性和方法,允许开发者在画布上创建、编辑和样式化文本对象。

1524
上一篇: Nodejs实现图片上传,链接保存到Mongodb数据库
下一篇: 使用Tampermonkey 前端程序员竟用它入侵了github系统。。。(内附源码)
拿我格子衫来
拿我格子衫来 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 6万+粉丝 858原创
评论 27
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值