小程序实现canvas绘制图片和文字并保存到手机

2023-10-29

 HTML

<template>
	<view>
		<canvas canvas-id="myCanvas" :style="{height:'380px',width:wWidth+'px',background:'#FFFFFF'}"></canvas>
		<view class="textCenter">
			<button @click="saveCanvas">保存图片</button>
		</view>
	</view>
</template>

JS

<script>
	export default {
		data() {
			return {
				wHeight:'',
				wWidth:''
			}
		},
		onLoad(){
			this.wHeight=uni.getWindowInfo().screenHeight-50; //屏幕可视区域高度
			this.wWidth=uni.getWindowInfo().screenWidth;//屏幕可视区域宽
			// 获取Canvas对象 
			var context = wx.createCanvasContext('myCanvas') 
            //设置背景颜色是白色,这个地方就是设置一个与canvas画布一样大小的方框设置方框背景
			context.setFillStyle('#FFFFFF')
			context.fillRect(0,0,this.wWidth,380);
			context.stroke()

			// 绘制文本			
			context.setFontSize(20)			
			context.setFillStyle('red')
			context.setTextAlign('center')
			context.fillText('Hello World!',  this.wWidth/2, 50) 
			
			context.setFontSize(20)
			
			context.setFillStyle('red')
			context.setTextAlign('center')
			
			context.fillText('葫芦娃', this.wWidth/2, 100)
			context.stroke() 
			let _this=this;
			// 绘制图片
			wx.getImageInfo({
				src: 'https://yujia-shanghai-bucket.oss-cn-shanghai.aliyuncs.com/h5/out_program/1687242451873_634a7025d03364b415b90bf5a07306071827dbc97358-C6odDl_fw1200.webp.jpg',
				success(res) { 
					context.drawImage(res.path, _this.wWidth/2-100, 140, 200, 200) 
					context.stroke() 
					// 将Canvas绘制出来 
					context.draw()
				}			
			}) 
		},
		methods: {
			saveCanvas(){
				wx.canvasToTempFilePath({  
					x: 0,  
					y: 0,  
					width: this.wWidth, 
					height: 380,  
					canvasId: 'myCanvas',  
					fileType:'jpg',
					success: function (res) {  
						console.log(res.tempFilePath);  
						wx.saveImageToPhotosAlbum({
							filePath: res.tempFilePath,
						    success: (resS) => {    
							    console.log(resS)  
							    uni.showToast({
								    title:'保存成功',
								    icon:'success'
							    })
						    },  
						    fail: (errS) => {
							
						    }}) 
					    },fail: (err) => {
						    console.log(err);
					    }  
				    }) 
				    return;
				
			    }
		    }
	    }
</script>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序实现canvas绘制图片和文字并保存到手机 的相关文章

随机推荐

  • 消息队列mq总结

    转自 http blog csdn net konglongaa article details 52208273 http blog csdn net oMaverick1 article details 51331004 https y
  • Css实现省略号...及悬浮层显示全部内容的方法:

    1 单行文本省略 overflow hidden 溢出隐藏 white space nowrap 禁止换行 text overflow ellipsis 2 多行文本省略 display webkit box 谷歌 webkit box o
  • 软工UML画图

    学习如何画图 如类图 顺序图 流程图 E R图和类代码等 一个一个来 起始 数据流图 功能模型 基本符号 加工 命名要用动宾词组 外部实体 数据存储 数据流 命名要用名词 题目说明解法 下面用个题来说明 假设一家工厂的采购部每天需要一张定货
  • 微服务架构(Microservice Architecture)

    之前一段时间 有听部门架构说起接下来公司要使用微服务架构来研发系统 当时没怎么在意 因为是第一次听说微服务这个名词 果然无知者无畏啊 正好赶上五一假 我自告奋勇的 接了编写微服务架构培训文档这个任务 也许因为我是文科生 文笔稍微好点 五一假
  • Qt-OpenGL-03 纹理Texture

    写在开头 文章是基于纹理 LearnOpenGL CN 教程的学习记录 强烈建议在网站上先弄清楚原理再看此文章 以Qt GL窗口代替GLFW的写法 Qt库中一些类代替教程中的类 一起入坑 效果图 上图使用了两纹理混合 接下来是一些比较重要的
  • LaTeX 中插入图片使其紧跟插入的文字之后

    LaTeX 中插入图片使其不跑到每页的开头而紧跟插入的文字之后 此次建模过程中 遇到的一个比较棘手的问题是 当插入图片时 图片的位置总是会自动跑到当页 或下一页 的最上方 而不是紧跟在其对应的说明文字之后 这是我们想要的效果 解决方法如下
  • 云服务器被DDOS攻击该如何防御?

    相信很多大型网站遭遇到DDoS攻击 导致网站无法访问而又难以解决 包括小编的个人博客也曾接受过DDOS的 洗礼 对此感同身受 所以 本文我们一起来了解下DDOS攻击并分享一些在一定程度范围内的应对方案 关于DDOS攻击 分布式拒绝服务 DD
  • MOS管的原理及其米勒效应(学习笔记)

    一 MOS管的组成及其原理 在讲解MOS的组成之前我们先来了解一下N型半导体和P型半导体 N型半导体是在纯净的硅晶体中掺入了5价磷 此时磷原子最外层多出来了一个自由电子 因为自由电子带负电 所以我们称为N型半导体 N取自于Negative
  • Go语言中json.Marshal()一直返回[123 125]的解决方法

    Go语言中对结构体进行json Marshal 一直返回 123 125 即 原因是go中是否可导出是根据名字首字母是否大写来确定的 如果结构体某字段的首字母为小写则不可导出 例子如下 注意Student内字段首字母的大小写 不可导出 ty
  • Caffe学习3——Forward and Backward

    Forward和Backward是Net中的计算本质 让我们考虑最简单的逻辑回归分类器 前向传播的部分是根据input来计算output 从而进行inference 在前向中 Caffe通过模型中每个layer的计算组合来计算 functi
  • 如何查看 Linux 系统安装的时间

    我们 SUN 实验室每台服务器上架后都需要填写一个表格 这个表格包括详细的机器硬件配置 操作系统版本和安装时间 网络配置 机器名 MAC 地址和 IP 安装的软件和用途 安全级别和策略 联系人 上架时间 机柜号等 昨天有位管理员忘了填写操作
  • Vue中常见设计模式的应用~

    Vue是基于什么模式 表示既然是Vue中常见的设计模式 首当其冲就先聊聊MVVM模式啦 一 mvvm模式 Vue js 是一个基于 MVVM 设计模式的前端框架 它将前端中的 UI视图 与 底层数据 和 业务逻辑 分离开来 使得UI视图与数
  • 并查集-- 一种路径压缩实现

    并查集用于计算图连通分量 比如回答这样的问题 社交媒体中 用户A和用户B是否属于同一个圈子里的 一个城市到另一个城市是否是可达的 并查集适用于并不需要计算出图上具体的路径 只需要计算是否连通 public interface UnionFi
  • epub.js使用

    div div 1 引入图书路径 需是epub类型 method需为default 要么苹果端加载为空白 var book ePub epub 三国演义 epub openAs epub var rendition book renderT
  • 【Photon Voice】如何获取App ID

    步骤1 注册并登录Photon 已经有账户了 您可以直接进行步骤2 注册一个光子账户 第2步 获取应用程序ID App ID是为Photon Cloud应用程序生成的标识符 当应用程序客户端连接用户或断开其他应用程序的用户时 将使用到它 进
  • GB/T28181-2022协议版本标识X-GB-Ver解读

    GB28181 2022相对2016 其中有个变化是 报文中携带协议版本标识 X GB Ver 3 0 3 0 2022 2 0 2016 为便于联网设备或服务器之间互相识别对方支持的协议版本 在SIP注册及其响应消息 无论是成功或失败 头
  • 客观面试题--36.Mybatis$与#取值的区别

    1 是将传入的值当做字符串的形式 eg select id name age from student where id id 当前端把id值1 传入到后台的时候 就相当于 select id name age from student w
  • shell脚本中 if 、for 命令使用方法

    1 if 语句的使用 if语句的语法 if f file then如果有else 为 if then elif then else fi eg 判断某一个文件是否存在 file test 1 hello txt if f test 1 he
  • gigapixel ai 5.1汉化版 附使用教程

    gigapixel ai是一款运用了AI人工智能技术的图片 无损 放大软件 采用了AI深度学习技术 通过它 你可以放大图像并填补其他调整大小的产品遗漏的细节 让低分辨率图片专为高分辨率 高质量图片 而且该软件在功能上与PhotoZoom软件
  • 小程序实现canvas绘制图片和文字并保存到手机

    HTML