微信小程序新版canvas绘制图片方法

这篇具有很好参考价值的文章主要介绍了微信小程序新版canvas绘制图片方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天在做项目使用到了canvas绘制二维码,发现以前的方法被弃用了。

wxml:

<canvas type="2d" id="myCanvas" style="width: 100%;height: 100vh"></canvas>

如果想要绘制需要将起临时存储起来,写入成功的就可以进行绘制了。(如果是点击展示二维码,最好是先将数据写到onLoad事件中,在将要绘制的东西写到点击事件中去,在点击事件中去获取数据);

js:

Page({
  onReady:function () {
    const query = wx.createSelectorQuery()
    query.select('#myCanvas')
      .fields({ node: true, size: true })
      .exec((res) => {
        const canvas = res[0].node
        const ctx = canvas.getContext('2d')
        const dpr = wx.getSystemInfoSync().pixelRatio
        canvas.width = res[0].width * dpr     // 获取宽
        canvas.height = res[0].height * dpr  // 获取高
        ctx.scale(dpr, dpr)
        
        // 到这里就可以直接绘制
         let image = canvas.createImage();//创建iamge实例
        image.src = '引入本地的图片背景图';  // 引入本地图片
        image.onload = function () {
          ctx.drawImage(image, 0, 0, 289, 370); // 背景图

  }
})

绘制base64图片

// 绘制base64图片
          //声明文件系统
          const fs = wx.getFileSystemManager();
          var times = new Date().getTime();
          var codeimg = wx.env.USER_DATA_PATH + '/' + times + '.png';
          //将base64图片写入
          fs.writeFile({
            filePath: codeimg,
            data: code.slice(22),  // code就是接口返回的base64数据(分割掉前面的data:image/png;base64,)
            encoding: 'base64',
            success: () => {
              console.log(codeimg);
              wx.createSelectorQuery().select('#myCanvas').fields({ node: true, size: true })
                .exec((res) => {
                  let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
                  let canvas = res[0].node;
                  const bg = canvas.createImage();
                  bg.src = codeimg;
                  bg.onload = function () {
                    ctx.drawImage(bg, 76, 175, 140, 140);
                  }
                })
            }
          });

        }
        
      })

尺寸可以根据自己的需要进行更改。

长按保存到本地(在真机测试中用bindlongtap不生效),可以换成catchlongtap。如果绘制的canvas再外面可以在渲染画布的上面声明一个变量等于this。    var _this = this;

在写入文件中设置_this.setData({_this:canvas});

 fs.writeFile({
            filePath: codeimg,
            data: code.slice(22),
            encoding: 'base64',
            success: () => {
              wx.createSelectorQuery().select('#myCanvas').fields({ node: true, size: true })
                .exec((res) => {
                  let ctx = res[0].node.getContext('2d');//getContext返回Canvas 的绘图上下文
                  let canvas = res[0].node;
                  const bg = canvas.createImage();
                  bg.src = codeimg;
                  bg.onload = function () {
                    ctx.drawImage(bg, 76, 175, 140, 140);
                  }
                // 设置
                  _this.setData({
                    _this: canvas
                  })
                })
            }
          });

在长按保存事件中(catchlongtap),将canvas = 画布this.data._this文章来源地址https://www.toymoban.com/news/detail-507940.html

wx.canvasToTempFilePath({
      // 把画布转化成临时文件
      x: 0,
      y: 0,
      width: 380, // 截取的画布的宽
      height: 600, // 截取的画布的高
      destWidth: 380, // 保存成的画布宽度
      destHeight: 600, // 保存成的画布高度
      fileType: 'png', // 保存成的文件类型
      quality: 1, // 图片质量
      canvas: this.data._this, // 画布
      success(res) {
        console.log(res);
        // 2-保存图片至相册
        wx.saveImageToPhotosAlbum({
          // 存成图片至手机
          filePath: res.tempFilePath,
          success(res2) {
            wx.hideLoading();
            wx.showToast({
              title: '保存成功',
              duration: 2000
            });
          },
          fail(res3) {
            if (res3.errMsg === 'saveImageToPhotosAlbum:fail auth deny') {
              wx.showToast({
                title: '保存失败,稍后再试',
                duration: 2000,
                icon: 'none'
              });
              wx.hideLoading();
            } else {
              wx.showToast({
                title: '保存失败,稍后再试',
                duration: 2000,
                icon: 'none'
              });
              wx.hideLoading();
            }
          }
        });
      },
      fail(err) {
        console.log(err);
        wx.showToast({
          title: '保存失败,稍后再试',
          duration: 2000,
          icon: 'none'
        });
        wx.hideLoading();
      }
    });
  }

到了这里,关于微信小程序新版canvas绘制图片方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序canvas画布绘制文字自动换行

    关键步骤介绍: text为需要绘制的文本,通过换行符将text分割为words数组。 basic_height为第一行文本的高度。 get_canvas_row函数根据行宽限制将输入文本转化为不同的行,实现见下文。 text_size为设置的文本高度,h+text_size*j为每行待绘制文本的高度,绘制完成后更新h。 get_canvas_

    2024年01月17日
    浏览(54)
  • 微信小程序canvas画图案列,实现生成头像并保存,小程序新版canvas变化,小程序中canvas注意事项

    你一定见过很多制作头像的小程序,无论是国庆的红旗,圣诞的帽子,还是疫情的口罩,都可以用小程序生成应景的头像,那么具体的代码是怎么实现的呢?前些天帮别人做了一个生成姓氏头像的功能,里面的实现原理基本一致,都是通过Canvas实现,以生成姓氏头像为例,记录一下小程序的

    2024年02月09日
    浏览(55)
  • 微信小程序使用canvas绘制海报并保存本地相册

    在做微信小程序的时候,很多都会用到生成海报分享功能,刚好最近项目有这个需求,今天就发出来记录下 首先是使用canvas绘制一张海报,微信小程序的canvas有老版本和新版本我是用的是新版本 代码如下 js部分 我的做法是给canvas隐藏了不看到 ,等canvas绘制完毕后导出的url直接赋给

    2023年04月08日
    浏览(42)
  • 微信小程序中使用画布canvas实现动态心电图绘制

    大家好,我是雄雄。 近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过,只能通过这个项目,边做边学了。 人家都说小程序用原生的特别难,大部分都用 uniapp 开发,说是这个方便快捷,还能

    2024年02月09日
    浏览(45)
  • 【小程序图片水印】微信小程序图片加水印功能 canvas绘图

    感觉有用的话,可以打赏一把么?一毛不嫌少,十块不嫌多 更多详细代码请关注公众号索取(备注:公众号):

    2024年04月29日
    浏览(50)
  • 微信小程序canvas生成图片并保存

    需求: 做一个类似下图的功能。图片内容是动态的,用canvas画出来,生成临时图片,再保存。 实现:  其他使用,查看微信开发文档  

    2024年02月13日
    浏览(53)
  • 在H5、微信小程序中使用canvas绘制二维码、分享海报

    提示:绘制二维码的插件有很多,有些仅支持H5,有些只适用微信小程序,故读者在使用二维码插件前需要先查看插件官方文档,查看其支持的环境 H5中安装qrious插件 引入qrious canvas模板 初始化canvas 二维码绘制并渲染 微信小程序中安装weapp-qrcode插件 引入weapp-qrcode canvas模板

    2024年02月14日
    浏览(60)
  • 微信小程序--canvas画布实现图片的编辑

    上传图片,编辑图片大小,添加文字,改变文字颜色等 微信小程序--canvas画布实现图片的编辑 软件环境:微信开发者工具 官方下载地址:微信开发者工具下载地址与更新日志 | 微信开放文档 1、基本需求。 实现上传图片 实现图片编辑 实现添加文字 实现导出图片 2、案例目录

    2024年02月05日
    浏览(53)
  • 微信小程序:使用canvas 生成图片 并分享

    废话不多说直接上代码!!!! 最终效果图  

    2024年02月11日
    浏览(62)
  • 微信小程序-生成canvas图片并保存到手机相册

    wxml页面 wxss页面 js代码

    2024年02月10日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包