侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

微信小程序绘制图片发送朋友圈

微信(小程序)  /  管理员 发布于 5年前   360

本文实例为大家分享了微信小程序绘制图片发送朋友圈的具体代码,供大家参考,具体内容如下

这种生成图片的效果是很常见的,实现起来也不难,跟原生js的差不多。需要注意的就是canvas标签上不要加太多的css,后果呢就是导致canvas不显示,还有呢就是canvas组件的优先级是最高的,所以会覆盖掉下面的所有内容,解决方法呢就是使用:

使用上面这两个组件是可以盖在canvas上面的。

注意:canvas绘制不支持网络图片,需要将网络图片保存成本地图片

 onLoad: function(options) {    var grade = options.grade;    this.setData({      grade: grade    })    this.loading();   },  //检测,网络图片是否下载完成  loading: function() {    var _this = this;    wx.showLoading({      title: '生成中...',    })    timer = setInterval(function() {      var avatarUrl = _this.data.avatarUrl;      var qc_code = _this.data.qc_code;      if (avatarUrl != null && qc_code != null) {        wx.hideLoading();        clearInterval(timer);        _this.draw();      }    }, 500)  },  //保存到相册  saveImage: function() {    var imagePath = this.data.imagePath;    wx.saveImageToPhotosAlbum({      filePath: imagePath,      success: function(res) {        console.log(res)      },      fail: function(res) {        console.log(res)      }    })   },  //将用户头像下载为本地路径  downImage: function(img) {    var _this = this;    wx.getImageInfo({      src: img,      success: function(res) {        console.log(res.path)        _this.setData({          avatarUrl: res.path        })       }    })  },  //下载小程序二维码  downImage2: function (img) {    var _this = this;    wx.getImageInfo({      src: img,      success: function (res) {        console.log(res.path)        _this.setData({          qc_code: res.path        })       }    })  },  //生成canvas图片  draw: function() {    var _this = this;    var context = wx.createCanvasContext('firstCanvas');    var userInfo = wx.getStorageSync('userInfo');    var award ;    // 性别    var gender = userInfo.gender;    //背景图片    var bg = '../../images/icon-cj.png';    //得分    var grade = 0 ^ _this.data.grade;    var width;    var height;    if (grade >= 0 && grade <= 30) {      if(gender == 2){        award = '../../images/zbzxlp.png';      }else{        award = '../../images/zbzxlg.png';      }    }else if(grade >= 31 && grade <= 60){      if (gender == 2) {        award = '../../images/zklp.png';      } else {        award = '../../images/zklg.png';      }    } else if (grade >= 61 && grade <= 80){      if (gender == 2) {        award = '../../images/zmlp.png';      } else {        award = '../../images/whlg.png';      }    }else{      if (gender == 2) {        award = '../../images/wmlp.png';      } else {        award = '../../images/wmlg.png';      }    }      if (award == '../../images/zbzxlp.png' || award == '../../images/zbzxlg.png'){      width = 156;      height= 25;    }else{      width = 103;      height = 25;    }      //二维码    var qc_code = _this.data.qc_code;    // 用户头像    var avatarUrl = _this.data.avatarUrl;    //获取设备的基本信息    wx.getSystemInfo({      success: function(res) {        //绘制背景图        context.drawImage(bg, 0, 0, 350, 468);        // 绘制奖项        context.drawImage(award,180 - (width / 2),212 - (height / 2),width,height);        //绘制二维码        context.drawImage(qc_code, 175 - (92 / 2), 385 - (108 / 2), 92, 107);        //绘制得分        context.setFontSize(28); //字体大小        context.fillStyle = '#4fc089';        context.setTextAlign('center')        context.fillText(grade, 177, 48)        // 绘制姓名        context.setFontSize(16);        context.fillStyle = '#000000';        context.setTextAlign('center')        context.fillText(userInfo.nickName, 167, 180);        // 绘制头像        context.drawImage(avatarUrl, 72, 157, 33, 33);         context.draw(false, function() {          setTimeout(function() {            wx.canvasToTempFilePath({              width: 350,              height: 468,              destWidth: 700,              destHeight: 936,              canvasId: 'firstCanvas',              success: function(res) {                var tempFilePath = res.tempFilePath;                console.log("图片"+tempFilePath);                _this.setData({                  imagePath: tempFilePath,                  isCanvas: true                });                _this.upload(tempFilePath);               },              fail: function(res) {                console.log(res);              }            });          }, 1000);        });      },    })  },

因为我的项目需要,我上面做个很多判断,那些东西不需要管,重点就是,绘制图片drawimage方法 和绘制文字的方法,我的绘制方法是让他们根据canvas上的一个坐标点居中绘制的,这个可以看一下。

还有就是,生成图片的尺寸要比画的尺寸大一倍,这样图片不会失真,比较清楚,也就是这个方法:

wx.canvasToTempFilePath() 前两个参数是canvas的大小,然后是生成图片的大小,canvas的ID

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • 微信小程序生成海报分享朋友圈的实现方法
  • 微信小程序实现分享朋友圈的图片功能示例
  • 微信小程序实现分享到朋友圈功能
  • 微信小程序仿朋友圈发布动态功能
  • 微信小程序通过保存图片分享到朋友圈功能


  • 上一条:
    微信小程序使用canvas自适应屏幕画海报并保存图片功能
    下一条:
    详细教你微信公众号正文页SVG交互开发技巧
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 微信模板消息改版后发送规则记录(微信订阅消息参数值内容限制说明)(1个评论)
    • 微信支付v3对接所需工具及命令(0个评论)
    • 2023年9月1日起:微信小程序必须备案才能上线运营(0个评论)
    • 腾讯官方客服回应了:微信好友上限约10000个!(1个评论)
    • 2023年做微信小程序的老铁注意:新增收费项、微信小程序获取手机号也收费了(2个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-10
    • 2018-01
    • 2020-03
    • 2021-06
    • 2021-10
    • 2022-03
    • 2023-02
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客