fabric photo
发表于|更新于
|浏览量:
这是一个流行离开的世界,但是我们都不擅长告别。——《生活在别处》
今天分享一个fabric photo,它是一个基于 canvas 的纯前端的图片编辑器,支持方形,圆形,箭头,缩放,拖拽,鹰眼,马赛克,涂鸦,线条,导出 png,剪切等
github地址:https://github.com/ximing/fabric-photo
在线体验Demo:https://ximing.github.io/fabric-photo/

找了很多个,这个应该是很好用的了
并且协议为MIT,支持商用
相关推荐
2022-11-12
get请求包参数属性为数组(二)
伤害可能被原谅,但不会被遗忘——伊索 之前写过一篇get请求包含参数属性为数组 但是发现不适用数组不为对象的情况,例如ids: [1024, 2048, 4096],而且可读性有点差,使用起来还得转下参数,所以封装了改良版 1234567891011121314151617181920212223242526272829303132333435let searchParams = { current: 1, size: 1, orders: [ { column:'age', asc:true }, { column:'name', asc:true } ], ids: [1024, 204...
2021-07-26
在uniapp中引入地图
在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。这上面的夜的天空,奇怪而高,我生平没有见过这样奇怪而高的天空,他仿佛要离开人间而去,使人们仰面不再看见。——鲁迅《秋夜》 直接使用uniapp自带的map组件即可 文档:https://uniapp.dcloud.io/component/map 代码如下 123456789101112131415161718192021222324<template> <view> <view class="map-parent"><map style="width: 100%; height: 300px;" :latitude="latitude" :longitude="longitude" :markers="covers"></map></view> </view></template><script>expo...
2021-12-01
nvue中tap事件取消冒泡
青春是一种持续的陶醉,是理智的狂热。——拉罗什富科 nvue中@tap.stop阻止冒泡失效了 代码如下: 1<view @tap="parentEvent"><view @tap.stop="childEvent">触发触发</view></view> 大概有两种方案,第一种是改事件,改为@touchend事件 1<view @tap="parentEvent"><view @touchend="childEvent">触发触发</view></view> 不过还有另一种方式 1234567parentEvent(e) { console.log('parentEvent');},childEvent(e) { console.log('childEvent'); e.stopPropagation();}
2023-10-03
threejs+vite+ts实现官网基础部分
一个温柔的目光,一句由衷的话语,能使人忍受生活给他的许多磨难。——高尔基 官方文档:three.js manual 源代码从这里改进: GitHub - PacktPublishing/Learn-Three.js-Fourth-edition: Learn Three.js, Fourth edition, published by Packt 我本地进行了一些修改,首先package.json 12345678910111213141516171819{ "name": "three-ts", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc &...
2024-10-19
docmost
有缺点的战士终究是战士,完美的苍蝇也终究不过是苍蝇。 ——鲁迅《华盖集》 网站: https://docmost.com/ 文档: https://docmost.com/docs github: https://github.com/docmost/docmost Docmost 是一个开源协作维基和文档软件。它是 Confluence 和 Notion 的开源替代品。 运行: 123mkdir docmostcd docmostcurl -O https://raw.githubusercontent.com/docmost/docmost/main/docker-compose.yml 然后编辑文件 1vi docker-compose.yml 修改 APP_URL应替换为您选择的域。例如https://example.com或https://docmost.example.com 。 APP_SECRET值必须替换为长随机密钥。 您可以使用openssl rand -hex 32生成秘密。如果保留默认值,应用程序将无法启动。 将POSTGRES_PASSWORD环...
2024-05-18
js解决base64编码问题
地利不如人和,武力不如文德。——恒宽 主要是在解析 JWT 时发现 1atob(base64) 存在编码问题,我们如果想要将 base64 解码为 utf-8: 123456789101112function parseBase64ToJSON(base64) { const binaryString = atob(base64); const len = binaryString.length; const bytes = new Uint8Array(len); for (let i = 0; i < len; i++) { bytes[i] = binaryString.charCodeAt(i); } const decoder = new TextDecoder('utf-8'); return decoder.decode(bytes);} 然后就可以正确解析中文了

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog