加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

给你的头像加个圣诞帽吧

发布时间:2020-12-14 19:03:14 所属栏目:资源 来源:网络整理
导读:看着大伙都在弄这个,我自己也来试一哈,我分别用了两种方式来实现,一种是普通的方式,一种是wxs方式 普通方式 效果图如下: 思路 获取头像 选择素材 缩放,移动,旋转素材 生成canvas 生成图片,保存图片 实现方式 首先是获取头像,这个不用说,大家应该都

看着大伙都在弄这个,我自己也来试一哈,我分别用了两种方式来实现,一种是普通的方式,一种是wxs方式

普通方式

效果图如下:

思路

  • 获取头像
  • 选择素材
  • 缩放,移动,旋转素材
  • 生成canvas
  • 生成图片,保存图片

实现方式

首先是获取头像,这个不用说,大家应该都会的。

选择素材这里我准备了三张圣诞帽的素材,这个网上有很多,可以自己找下,然后我还做了一个选择手机相册的功能,如果你自己有素材的话也可以直接选择这个功能。

缩放,移动,旋转素材都是通过触摸函数去实现的,这里是先将布局做好,然后在标签上面绑定各个触摸事件,通过返回的值在标签的style里设置实现各个效果。

调整好了之后点击保存头像会获取所有参数并将头像画出来,再通过 wx.canvasToTempFilePath() 将canvas生成图片最后通过 wx.saveImageToPhotosAlbum() 保存图片。

主要代码

主要的函数就是下面这几个,代码片段我会放在文末,没有什么比较难的地方,就是要注意下计算的时候不要算错就行。

需要注意的点

由于素材的大小可能会有不同,所以在重新选择素材的时候高度要重新设置一下,这里我用了一个方法来重置高度,主要是每次重新选择素材的时候就用 wx.getImageInfo() 这个api去获取图片素材的宽高,再计算出宽高比。

wxs实现方式

实现方式

思路跟普通方式是一样的,不同的是这里将绑定事件通过 wxs 去实现,直接设置标签的参数而不通过逻辑层去处理,在性能上会比较好一点,不过这种实现方式在进行旋转的时候最后生成的图片会有不准,后面会说到。

参数的获取是通过在标签上设置style,然后点击保存的时候用 wx.createSelectorQuery() 获取各个参数的

获取旋转的值

由于 wx.createSelectorQuery() 并不能获取到 rotate 这个参数,所以我是通过下面这种方式来拿到旋转的值的,将旋转值以宽度的形式赋值给 .vo-ro

但是我发现旋转之后生成的图片不是正确的,原因是旋转之后通过 wx.createSelectorQuery() 拿到的宽高并不是图片大小的宽高,而是旋转之后的宽高,按理来说不应该是这样的,即使通过样式旋转,它的宽高应该保持不变才对,这样就造成了参数上的错误,所以画出来的图片是不准确的。

因为加了旋转之后画出来的图片会不准确,暂时想不出别的方法,我把旋转的按钮先注释掉了,只支持缩放跟拖拽。

总结

两种方式,wxs性能要更好,但是效果没第一种的好,看你要哪种了,最后祝大家圣诞节快乐,祝你生活愉快

developers.weixin.qq.com/s/Cizd1RmY7…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读