当前位置: 首页 > news >正文

小程序中通过canvas生成并保存图片

1. html

<canvas class="canvas" id="photo" type="2d" style="width:200px;height: 300px;"></canvas>
<button bindtap="saveImage">保存</button>
<!-- 用来展示生成的那张图片 -->
<image src="{{tempFilePath}}" mode="widthFix" />

2. js

data: {canvas: null,  //canvas 对象tempFilePath: ""
},onLoad(options) {wx.createSelectorQuery().select('#photo') // 在 canvas的 id.fields({node: true,size: true}).exec((res) => {// Canvas 对象const canvas = res[0].nodethis.setData({ //这里保存canvas对象是因为下面保存相片要用这个对象canvas})// 渲染上下文const ctx = canvas.getContext('2d')// canvas 画布的实际绘制宽高const width = res[0].widthconst height = res[0].height// 初始化画布大小const dpr = wx.getWindowInfo().pixelRatiocanvas.width = width * dprcanvas.height = height * dprctx.scale(dpr, dpr)// 清空画布ctx.clearRect(0, 0, width, height)//canvas背景色ctx.fillStyle = '#3c9cff';ctx.fillRect(0, 0, 200, 300);// 图片对象const image = canvas.createImage()image.src = '/images/640.png'image.onload = () => {// 将图片绘制到 canvas 上ctx.drawImage(image, 0, 0, 200, 300)}})
},
// 生成图片
saveImage() {wx.canvasToTempFilePath({canvasId: 'photo',destWidth: 286,destHeight: 417,canvas: this.data.canvas,success: (res) => {this.setData({tempFilePath: res.tempFilePath})wx.saveImageToPhotosAlbum({filePath: res.tempFilePath,success: (res)=> {wx.showToast({title: '保存成功',})}})}});
},

3. css

.canvas {margin: auto;font-size: 0;
}.show {width: 200px;margin: auto;display: block;
}

4. 效果图

在这里插入图片描述

http://www.lryc.cn/news/134997.html

相关文章:

  • Error creating bean with name ‘esUtils‘ defined in file
  • Java开发面试题 | 2023
  • Java课题笔记~ 自定义拦截器实现权限验证
  • 微信小程序使用npm引入三方包详解
  • pytest自动化框架运行全局配置文件pytest.ini
  • 视频播放实现示例Demo
  • makefile的自动化变量
  • 使用Kind搭建本地k8s集群环境
  • 【STM32RT-Thread零基础入门】 7. 线程创建应用(多线程运行机制)
  • .net日志系统
  • SpringCloud学习笔记(二)_Eureka注册中心
  • spark的eventLog日志分析
  • 探究Java spring中jdk代理和cglib代理!
  • 反转链表(C++)
  • 适配器模式:让不兼容的接口协同工作
  • 【1day】复现Milesight-VPNserver.js 任意文件读取漏洞
  • 前端代码规范
  • Java接入文心一言
  • 信息管理系统三级等保的一些要求
  • 第六届“蓝帽杯”电子取证模块(初赛)解析+全资源一次性分享
  • 《Go 语言第一课》课程学习笔记(九)
  • docker 安装nginx 和 elasticsearch ik 自定义分词
  • 谈谈收音机的发展
  • QTreeWidget——信号处理
  • 【Java从入门到精通|1】从特点到第一个Hello World程序
  • JAVA 读取jar包中excel模板
  • 解决方案:fatal error: openssl/bio.h: 没有那个文件或目录
  • 【MySQL系列】ALTER语句详解,以及UPDATE,DELECT,TRUNCATE语句的使用+区别
  • c++关键字 =delete和=default
  • idea 左下角的Git(Version Control)中显示Local Changes窗口