昨天朋友圈被「请给我一面国旗@微信官方」刷屏,虽然知道是假的,但是从另一个角度来看,弄清楚如何实现更有趣。

1、canvas

这就不得不提到小程序中的 API canvas,H5 中也是有 canvas 的,不过之前也一直没有机会用,这次正好乘机试试水。

晚上回家看了下官方文档,网上搜了一些类似的功能实现,最后写好了一个 demo,基本上是能初步绘制国旗头像了。

当然以后如果想要绘制其他带挂件的头像,只需要更改挂件素材即可,提前预约帮你们定做今年的圣诞帽。

2、代码来了

实现过程主要分为以下几个步骤:

1、新建 canvas 画板

2、绘制头像当做背景(demo 目前是自行上传头像制作)

3、绘制国旗边框

4、保存到手机相册(需授权)

废话不多说,直接上代码:

// wxml 页面
<view class="container"><!-- 头像绘制区域 --><canvas canvas-id="myAvatar" class="canvas"></canvas><!-- 按钮 --><button class="btn-save" bindtap="upload">上传头像</button><button disabled="{{ !save }}" class="btn-save" bindtap="saveImg">保存到相册</button>
</view>

// 部分功能 js
// 绘制头像背景
drawAvatar() {var that = this;var p = that.data;context = wx.createCanvasContext('myAvatar', this);context.drawImage(p.src, 0, 0, 256, 256);context.draw(true)context.save();context.translate(p.hat.x, p.hat.y)context.scale(p.hat.b, p.hat.b)context.rotate(p.hat.rotate * Math.PI / 180)context.drawImage(p.hat.url, 0, 0, p.hat.w, p.hat.h)context.draw(true)this.setData({save: true})
},// 保存图片
saveImg() {wx.canvasToTempFilePath({canvasId: 'myAvatar',success(res) {wx.saveImageToPhotosAlbum({filePath: res.tempFilePath,success(res) {wx.showToast({title: '保存成功'})},fail(res) {wx.showToast({title: '取消保存...',icon: 'none'})}})}})
}

3、最后

demo 写完了,以小程序的尿性,怎么会没有坑呢?发现真相的我眼泪差点掉下来,而且这个坑不是一般的坑,弄了老半天都没解决。

具体是啥坑小程序留言区揭晓,感兴趣的欢迎来留言讨论如何解决,到发文为止依旧是个巨坑。

公众号「我是玖柒后」后台回复「头像」即可获取 demo 源码,填坑不忘挖坑人,我太南了。

推荐文章:

小程序九九八十一坑之跳转传参

转载于:https://www.cnblogs.com/msunh/p/11587120.html

教你制作挂件头像 | 小程序七十二变之 canvas 绘制国旗头像相关推荐

  1. 微信小程序之用canvas给微信头像加小红旗(canvas无法使用网络资源绘画)

    微信小程序之使用canvas给微信头像加小红旗 情境:新中国成立70周年,普天同庆.昨天看到朋友圈中被刷屏的@官方微信 给自己的头像加小红旗.服务器被卡爆,很多朋友说换头像不成功. 任务:打算自己写一 ...

  2. 在H5、微信小程序中使用canvas绘制二维码、分享海报

    在H5.微信小程序中使用canvas绘制二维码.分享海报 文章目录 在H5.微信小程序中使用canvas绘制二维码.分享海报 前言 一.canvas绘制二维码 1.H5中使用canvas 2.微信小程 ...

  3. 微信小程序之基于canvas绘制高铁线路图

    前几天@天下雪 给了我一张高铁的路线图,问我能不能用canvas画出来,所以我就试了试,我的思路可能比较复杂:如果有更简单的思路可以留言回复: 关注微信公众号,获取源码和教程 下面说一下我的实现思路: ...

  4. 小程序之基于canvas绘制高铁线路图

    前几天@天下雪 给了我一张高铁的路线图,问我能不能用canvas画出来,所以我就试了试,我的思路可能比较复杂:如果有更简单的思路可以留言回复: 关注微信公众号,获取源码和教程 下面说一下我的实现思路: ...

  5. 手把手教你制作自己的小程序

    (小程序开发全套视频教程源码打包放到最后) 做一个自己的小程序共有四个步骤: 1.注册微信小程序. 2.制作小程序. 3.上传并提交审核. 4.审核通过,小程序上线. 简单来讲即四步操作法: 注册-- ...

  6. 零基础手把手教你制作一个微信小程序云开发-实验室仪器管理系统(二)

    书接上文,我们了解到了怎么在微信开发者工具上新建一个空的云开发项目. 别急,你以为你能大展身手开始写代码了? 答案是否定的,首先你要先开始对小程序进行模块拆分 郦波老师有一句话说得很好:解决问题的最好 ...

  7. 用微信小程序开发的Canvas绘制可配置的转盘抽奖

    使用https://github.com/givebest/GB-canvas-turntable代码移植过而来. 其它 微信小程序感觉是个半成品,代码移植过程比较繁琐麻烦.canvas API 部分 ...

  8. 小程序 mpvue 使用canvas绘制环形图表

    本来想用css3来实现,发现轮廓边上残影严重,所以直接用小程序的canvas使用来. 最终效果如下: 我的整页代码如下,里面已经写出备注来. <template><div class ...

  9. 微信小程序开发—(八)canvas绘制图形

    一.小知识 (1).API接口 (2).context 对象的方法列表 二.步骤 wxml中: <canvas canvas-id="myCanvas" class=&quo ...

  10. 小程序中使用canvas绘制海报

    最近项目需求使用canvas绘制朋友圈可分享的海报,中间遇到很多问题,于是上网搜索,完美解决后,在此总结一下. 先来看一下效果图,点击按钮生成带二维码的图片. 1.关于canvas画布的宽度和高度 w ...

最新文章

  1. Eclipse下把jar包放到工程lib下和通过buildpath加载有什么不同(解决找不到类的中级方法)...
  2. Windows 1.0 to Windows 10
  3. Acwing第 20 场周赛【未完结】
  4. 【Tools】StarUML2.8工具安装和破解
  5. linux 权限 mask,【自学Linux】Linux用户、组、权限(一)
  6. Firefox不支持input手动填写后的getAttribute(value),只能用.value(Firefox 3.5.5 Windows)。bug?...
  7. 随想录(改进的豆瓣爬行代码)
  8. 更改matplotlib中x或y轴上的“刻度频率”?
  9. klwp主题大全_klwp主题包百度网盘版下载-klwp主题包百度云版 _5577安卓网
  10. catia之车灯设计
  11. 可穿戴市场掘金:VC如何看上小小的ZEPP公司
  12. 3.3 测试实现标准的ZIO服务
  13. Postman打开报错could not open postman 无法打开如何解决
  14. 苹果字体怎么改_9102年了,公众号还不会换字体?
  15. 如何诊断Shopee店铺?记住这3个操作
  16. pool win10提示bad_Win10系统出现bad pool header蓝屏怎么办?
  17. 【MFC】打砖块小游戏(中)(6)
  18. mysqlyog mysql8.012_瑞昱网卡驱动-Realtek瑞昱RTL-81xx系列网卡驱动(Win8)8.012.0304.2013版下载_东坡手机下载...
  19. (pytorch进阶之路)Masked AutoEncoder论文及实现
  20. 用计算机浏览电子图片,电脑制作电子图片库手机上放有什么软件

热门文章

  1. 欢迎关注异贝!今天与您一起分享服装行业异贝引客方案设计!
  2. 2018主流台式计算机跑分,pu天梯图2018最新版2018电脑cpu处理器性能排行榜
  3. Intel(R) Ethernet connection (2) I219-LM 设置抓取VLAN tag报文
  4. Kaggle共享单车需求项目详解
  5. 一分钟解决Chrome浏览器主页被hao123、360和2345篡改简单有效方法
  6. 加州大学洛杉玑分校计算机专业,UCLA的Computer Science「加州大学洛杉矶分校计算机科学系」...
  7. 软件工程阶段性总结(二)——软件计划和需求分析
  8. Node实现支付宝网页支付流程(沙箱环境)
  9. 拉昆塔温德姆酒店中国首店即将亮相山东潍坊;复星旅文旗下Club Med落子北美市场 | 全球旅报...
  10. 07-图4 哈利·波特的考试(25 分)