uniapp图片涂鸦插件(支持多种涂鸦方式,图片放大缩小)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工程地址https://gitee.com/geshijia/ct-graffiti

ct-graffiti涂鸦组件使用说明

参考说明

参考链接:https://github.com/ylyuanlu/yl-graffiti 感谢作者的付出,给我提供了一些思路,并做了如下优化:

  • 增加图片放大缩小移动功能
  • 添加更多涂鸦图形的选择
  • 增加文字涂鸦功能 需要自己配置一个可用弹框输入文字后赋值给text(index文件384行)

组件引用方式

easycom方式引用

将yl-graffiti组件放入根目录下的components中:

|--components
|    |--yl-graffiti
|        |-yl-graffiti.vue
|--pages
|--pages.json

然后在pages.json文件中添加easycom声明:

{"easycom": {"autoscan": true,"custom": {"^yl-(.*)": "@/components/yl-$1/yl-$1.vue"}},...
}

代码引用

同上,将yl-graffiti组件放入根目录下的components中或放在使用该组件页面对应的目录下,然后在页面中导入该组件:

<script>import ylGraffiti from "./components/yl-graffiti/yl-graffiti.vue";export default {components: {ylGraffiti},...}
</script>

示例代码

组件使用相关代码,详细代码请参考示例工程,下面贴出主要代码。

<view>...<yl-graffiti ref="graffiti" canvas-id="myCanvas" :width="canvasStyle.w" :height="canvasStyle.h":shape="curShape" :lineColor="lineColor" :lineWidth="lineSize" :bgImage="picture"@stepChanged="stepChanged" :text="text" :optIndex="optIndex"></yl-graffiti><!-- 涂鸦组件控制视图,省略 -->...
</view>
<script>// 涂鸦组件功能由页面来控制import ylGraffiti from "./components/yl-graffiti/yl-graffiti.vue";export default {components: {ylGraffiti},data() {return {text: '',//文字optIndex: 3,stepInfo: { // 用来控制撤销和重做curStep: -1,len: 0},saving: false}},...,methods: {...,/*** 当前位置变化* @param {Object} e*/stepChanged(e) {this.stepInfo = e;},/*** 选择涂鸦的类型* @param {Object} index*/selectWritingOption(index) {switch (index) {case 0:case 1:case 2:this.optIndex = index;break;case 3:this.optIndex = index;break;case 4:this.$refs.graffiti.repeal();break;case 5:this.$refs.graffiti.redo();break;case 6:this.$refs.graffiti.clearBoard();break;default:break;}},    /*** 保存涂鸦*/savePicture() {this.saving = true;this.$refs.graffiti.saveCanvas().then(res => {this.pictures[this.swiperCurrent].url = res;setTimeout(_ => this.saving = this.writing = false, 100);});}}}
</script>

组件接口

属性

参数说明类型默认值
canvasId画布IDstringMyCanvas
width画布宽度number300
height画布高度number225
shape画笔绘制图形形状stringcurve
lineColor画笔颜色string#091A22
lineWidth画笔宽度number5
bgColor背景颜色string
bgImage背景图片string
text文字涂鸦string文字文字
optIndex当前选择功能string、number3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt+FFmpeg+opengl从零制作视频播放器-15.音视频一些知识

1.视频方面 本专栏只针对视频压缩数据为H.264的数据进行演示。 H264解码后的原始数据主要包括片(slice)、宏块(MB)以及YUV像素数据。 片是H264编码中的基本单元,它包含一帧图像的部分或全部数据。一个视频帧可以由一个或多个片组成,每个片最少包含一个宏块,最多可以包…

怎么读取springboot中的properties.yml配置文件里的配置值(亲测有效)

怎么读取springboot中的properties.yml配置文件里的配置值 test:username: name主配置类中加上 EnableConfigurationProperties(MailConfigProperties.class)类上加ConfigurationPropetise("test“),属性就会自动注入配置值&#xff1b; ConfigurationPropetise("…

第十四届蓝桥杯蜗牛

蜗牛 线性dp 目录 蜗牛 线性dp 先求到达竹竿底部的状态转移方程 求蜗牛到达第i根竹竿的传送门入口的最短时间​编辑 题目链接&#xff1a;蓝桥杯2023年第十四届省赛真题-蜗牛 - C语言网 关键在于建立数组将竹竿上的每个状态量表示出来&#xff0c;并分析出状态转移方程 in…

[实战]API防护破解之签名验签

前言&#xff1a; 传统的接口在传输的过程中&#xff0c;是非常容易被抓包进行篡改&#xff0c;从而进行中间人攻击。这时候我们可以通过对参数进行签名验证&#xff0c;如果参数与签名值不匹配&#xff0c;则请求不通过&#xff0c;直接返回错误信息&#xff0c;从而防止黑客…

混合A*源码解读(c++)

基于ros中通过slam建立的栅格地图&#xff0c;使用混合A*进行路径规划。 首先是run_hybrid_astar.cpp: #include "hybrid_a_star/hybrid_a_star_flow.h" #include "3rd/backward.hpp" #include <ros/ros.h>namespace backward { backward::SignalHa…

使用hashmap优化时间复杂度,leetcode1577

1577. 数的平方等于两数乘积的方法数 已解答 中等 相关标签 相关企业 提示 给你两个整数数组 nums1 和 nums2 &#xff0c;请你返回根据以下规则形成的三元组的数目&#xff08;类型 1 和类型 2 &#xff09;&#xff1a; 类型 1&#xff1a;三元组 (i, j, k) &#xff…

题目 3150: 冶炼金属

题目描述: 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V&#xff0c;V 是一个正整数&#xff0c;这意味着消耗 V 个普通金 属 O 恰好可以冶炼出一个特殊金属 X&#xff0c;当普通金属 O 的数目不足 V 时&#xff0c;无法…

OpenCV加载视频

一、加载视频 //视频路径QString appPath QCoreApplication::applicationDirPath();QString videoPath appPath "/vtest.avi";cv::VideoCapture capture;capture.open(videoPath.toStdString(),CAP_FFMPEG);//从摄像头读取//capture.open(0, CAP_DSHOW);cv::Mat f…

【趣味学算法】04_与谁结婚(逻辑推断|条件组合)

注&#xff1a; 本系列仅为个人学习笔记&#xff0c;学习内容为《算法小讲堂》&#xff08;视频传送门&#xff09;&#xff0c;通俗易懂适合编程入门小白&#xff0c;需要具备python语言基础&#xff0c;本人小白&#xff0c;如内容有误感谢您的批评指正 有三对情侣要结婚&…

带钢切割控制液压比例阀放大器

比例阀控制器放大器放大板技术是电液比例控制系统中的重要组成部分&#xff0c;它负责对比例阀进行精确控制&#xff0c;以实现对液压系统中流量、压力等参数的精细调节。可以实现对液压流量或压力的精确控制&#xff0c;从而使系统以更高的精度和更快的响应速度执行各种操作。…

以102flowers数据集为例训练ResNet50模型

以102flowers数据集为例训练ResNet50模型 使用飞桨高阶API&#xff0c;使用最少的代码量&#xff0c;实现在102flowers数据集训练ResNet50模型。同时可以一条命令修改成Mnist、Cifar10、Cifar100等数据集&#xff0c;换成其它模型也是只需要一句话代码。 数据集介绍 102flowe…

二叉排序树删(15.6)

#include <stdio.h> #include <stdlib.h> ///二叉排序树&#xff0c;中序遍历&#xff0c;查找typedef int KeyType; typedef struct BSTNode{KeyType key;struct BSTNode *lchild,*rchild; }BSTNode,*BiTree;//二叉查找树核心 //非递归创建二叉查找树 int BST_Ins…

java是不是没有指针呢?

在Java中&#xff0c;与C语言相比&#xff0c;指针的使用是受到限制的。Java的设计初衷是为了提供更高的安全性和可靠性&#xff0c;因此它采用了一些机制来避免常见的指针错误。 具体来说&#xff0c;Java中没有像C语言中那样的显式指针操作。Java中的引用可以看作是一种类似…

Zoho Mail有微信小程序啦!从微信就能直接收发邮件

Zoho Mail有微信小程序啦&#xff01;从微信就能直接收发邮件。可实现&#xff1a;从微信直接查看邮件、撰写新邮件、回复邮件。对于那些想从手机访问Zoho Mail企业邮箱来收发邮件&#xff0c;但又不想下载Zoho Mail 的手机app来占用手机存储的用户来说&#xff0c;微信小程序实…

Celery知识

celery介绍 # celery 的概念&#xff1a; * 翻译过来是芹菜 * 官网&#xff1a;https://docs.celeryq.dev/en/stable/ # 是分布式的异步任务框架&#xff1a; 分布式&#xff1a;一个任务&#xff0c;拆成多个任务在不同机器上做 异步任务&#xff1a;后台执行…

【开源】SpringBoot框架开发软件学院思政案例库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理员2.2 普通教师 三、系统展示四、核心代码4.1 查询思政案例4.2 审核思政案例4.3 查询思政课程4.4 思政案例点赞4.5 新增思政案例评语 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的软件学…

Rust 如何优雅关闭 channel

在 Rust 的标准库中&#xff0c;std::sync::mpsc::channel 提供了一个多生产者单消费者的 channel 实现。这个 channel 并不直接支持“优雅关闭”的概念&#xff0c;因为发送端&#xff08;tx&#xff09;和接收端&#xff08;rx&#xff09;是通过独立的对象表示的&#xff0c…

python 基础练习题

目录 1、定义两个变量&#xff0c;交换两个变量【使用多种方式】 2、给定成绩&#xff0c;判断用户成绩的档次 3. 作业&#xff1a;下列哪一项是“4是奇数或-9为正数”的否定&#xff08; &#xff09; 4. 作业&#xff1a;判断一个整数是奇数还是偶数 5. 求矩形的面积和周…

Mysql8.0.30数据data目录文件解释

数据库内存和磁盘架构 data目录展示 [rootDESKTOP-9ADRUGP data]# pwd /usr/local/software/mysql/3312/data [rootDESKTOP-9ADRUGP data]# ls -l total 96616 -rw-r----- 1 systemd-coredump input 56 Jul 24 2023 auto.cnf -rw-r----- 1 systemd-coredump input 30…

Python的自定义数据格式

在Python中&#xff0c;自定义数据格式通常涉及到创建自定义的数据类型或类。这些类可以封装数据并定义如何处理这些数据。以下是一些关于如何在Python中自定义数据格式的详细解释&#xff1a; 1. 定义类 首先&#xff0c;你需要定义一个类来表示你的自定义数据格式。这个类可…