小程序 canvas 新版(2.9.0之后)和旧版画图步骤 这边记录一下希望大家少踩坑

旧版

  • 需要canvas-id
<canvas :style="`width: ${cWidth}px; height: ${cHeight}px;position:fixed;left:-10000px;`" canvas-id="myCanvas" />
  • 需要draw
// 创建指定id的canvas实例
var ctx = wx.createCanvasContext('myCanvas')
// 第一个参数是图片路径
ctx.drawImage(imgPath, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
ctx.draw(false, ()=>{// 图片画出来之后的其他操作 可以通过wx.canvasToTempFilePath做后续操作// 一定要在回调里 如果不生效可以尝试用setTimeout包裹回调函数
})// 贴两个可能用到的方法
// 一、获取移动设备的宽 可以作为画布的宽
wx.getSystemInfo({success: (result) => {console.log('设备', result)},fail: () => {},complete: () => {}
})
// 二、获取网络图片或者本地图片的宽高及临时路径
wx.getImageInfo({src: this.imgUrl,success: (res) => {console.log('图片', res)}
})

新版(2d)

  • 需要设置type和id
<canvas id="myCanvas" type="2d" :style="`width: ${cWidth}px; height: ${cHeight}px;position:fixed;left:-1000px;`" />
  • 创建方法变了 draw方法也没有了 ctx.drawImage第一个参数是需要通过canvas.createImage()创建出来的对象
const query = wx.createSelectorQuery()
query.select('#myCanvas').fields({ node: true, size: true }).exec((res) => {const canvas = res[0].nodethis.canvas = canvas // 保存canvas实例 可能会用到const ctx = canvas.getContext('2d')// dpr好像是防止图片模糊之类的const dpr = wx.getSystemInfoSync().pixelRatiocanvas.width = res[0].width * dprcanvas.height = res[0].height * dprctx.scale(dpr, dpr)// 描绘图片 顺序不能换// 1.创建图片 canvas.createImage (不能通过new Image())const img = canvas.createImage()// 2.图片加载完毕之后再画出来img.onload = () => {// 新的方法第一个参数需要是DOM元素ctx.drawImage(img, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)// 不需要再调用draw方法wx.canvasToTempFilePath({canvas: this.canvas, // 需要传canvas实例success: (result) => {console.log('新的图片', result)}})}// 3.赋值src要在onload后面img.src = ''
})

小程序 canvas画图片相关推荐

  1. 【微信小程序canvas】实现小程序手写板用户签名(附代码)

    [微信小程序canvas]实现小程序手写板用户签名(附代码) 工作中公司业务需要的微信小程序用户签字功能 先看效果图: wxml <view class="wrapper"& ...

  2. 微信小程序-canvas绘制文字实现自动换行

    微信小程序-canvas绘制文字实现自动换行 在使用微信小程序canvas绘制文字时,时常会遇到这样的问题:因为canvasContext.fillText参数为 我们只能设置文本的最大宽度,这就产生 ...

  3. 小程序canvas绘制商品海报实现分享朋友圈

    小程序canvas绘制商品海报实现分享朋友圈 效果图: 实现步骤就是点击生成图片 在canvas画布中画出一张海报 然后保存在本地 在imags标签中展示,此处尽可能的把canvas组件隐藏 但是不能 ...

  4. 小程序Canvas原有接口不再维护

    画布.2.9.0 起支持一套新 Canvas 2D 接口(需指定 type 属性),同时支持同层渲染,原有接口不再维护. <!-- canvas.wxml --> <canvas t ...

  5. uni保存canvas图片_小程序canvas【开箱即用】

    前言 小程序canvas有多坑,相信开发过的同学们都深有体会 每一次写使用canvas都忍不住骂两句 鉴于此,小弟就从0开始,一步一步实现画图功能,并且列明所有我遇到的坑 注意:本文都是基于uni开发 ...

  6. 小程序Canvas绘制图片太大,自动闪退,安卓会有crash问题

    2019独角兽企业重金招聘Python工程师标准>>> 问题说明: 目前小程序Canvas版本还有不少bug,性能较低. 对于图片太大使用ctx.drawImage(imgpath, ...

  7. 微信小程序 canvas type = 2d 绘制海报心得(包括怎么绘制图片和圆角图片和圆角矩形等)

    微信小程序 canvas type=2d 使用心得 为了方便这里我封装成了一个component 然后说说怎么使用最新的方法(使用方法类似于html中的canvas可以进行参考)获取--canvas ...

  8. 微信小程序canvas画布新接口type为2D时drawImage方法的使用以及注意事项

    微信小程序canvas画布自2.9.0 起支持一套新 Canvas 2D 接口(需指定 type 属性),但文档不全,从原canvas的api转变到新的api时遇到不少问题,现将新版与旧版的画布载入图 ...

  9. 微信小程序详解 php,微信小程序canvas基础详解

    canvas 元素用于在网页上绘制图形.HTML5 的 canvas 元素使用 JavaScript 在网页上绘制2D图像.本文主要和大家分享微信小程序canvas基础详解,希望能帮助到大家. 一.了 ...

最新文章

  1. Linux学习(十五)---Python定制篇---apt软件管理和远程登录
  2. 人工智能的价值地图:AI产业增强革命的模式与路径
  3. 关于Jboss/Tomcat/Jetty的JNDI定义123
  4. mysql空密码php_WAMP中如何修改mysql默认空密码_MySQL
  5. flutter打开第三方应用
  6. kettle-实现每个分组的前N的数据
  7. webstorm 左侧文件目录树(不显示,怎么办?) - 设置篇
  8. pl/sql developer安装配置
  9. ARTIF:实时威胁智能识别框架
  10. vue导出数据为excel且设置样式
  11. android gps原始数据格式,Android编程获取GPS数据的方法详解
  12. tplink虚拟服务器 tcp,关于TP-Link路由器端口映射详解
  13. Flink 开发环境部署和配置
  14. STL之容器deque
  15. Bootstrap框架——栅格系统
  16. flyingsaucer转换多个html,用 flying saucer 生成pdf文件 Css及html的问题
  17. 不得不说的Telegram : 币圈与链圈的微信
  18. 如何linux删除文件夹,linux删除文件夹,教您电脑的linux怎么样删除文件夹
  19. 微信小程序运用云函数调用新闻类API
  20. 回想那些年我抛弃的技术 (纯属个人看法)

热门文章

  1. 美版t430笔记本win8系统下装Ubuntu的一些尝试和遇到的问题
  2. 连AI都在看《英雄联盟》游戏直播
  3. 微信新BUG曝光:好友偷偷删了你,用这样一串代码就能查出来!
  4. 关于使用群晖系统创建音乐外链的研究
  5. pcl_viewer的使用
  6. 线段树维护(最大区间和,最大子段和,最长连续上升子序列)
  7. 【R】【课程笔记】04+05 数据预处理+收益率计算
  8. Javascript 中 atob 方法解码中文字符乱码问题
  9. 人工智能在医学影像中的研究与应用
  10. 【Linux】用进程控制知识做一个简易版shell