微信小程序实现虎年春节头像制作
作者:hackun 发布时间:2024-04-16 08:47:47
标签:微信小程序,头像制作
马上就到春节了,今天看到有网友分享了网页版的虎年头像制作工具,感觉很不错,正好打算做个小程序练手没啥主题,那就用这个试试吧。
先上最终效果图:
说下实现流程
第一步:先获取到当前微信的头像图片,主要代码如下,注意默认获取到的头像图片不是高清的,需要先转换成高清图片,避免生成之后很模糊。
getUserProfile(e) {
console.log(e)
let that = this;
wx.getUserProfile({
desc: '仅用于生成头像使用',
success: (res) => {
var url = res.userInfo.avatarUrl;
while (!isNaN(parseInt(url.substring(url.length - 1, url.length)))) {
url = url.substring(0, url.length - 1)
}
url = url.substring(0, url.length - 1) + "/0";
res.userInfo.avatarUrl = url;
console.log(JSON.stringify(res.userInfo));
that.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
that.drawImg();
}
});
},
第二步:合成头像,把素材图片和第一步获取到的头像图片,获取到本地文件,然后利用小程序的cavas组件进行合成。
drawImg() {
let that = this;
wx.showLoading({
title: '生成头像中...',
})
let promise1 = new Promise(function (resolve, reject) {
wx.getImageInfo({
src: that.data.userInfo.avatarUrl,
success: function (res) {
resolve(res);
}
})
});
var mask_id = that.data.now_mask;
let promise2 = new Promise(function (resolve, reject) {
wx.getImageInfo({
src: `../../assets/img/mask0${mask_id}.png`,
success: function (res) {
console.log(res)
resolve(res);
}
})
});
Promise.all([
promise1, promise2
]).then(res => {
console.log(res)
var windowWidth = wx.getSystemInfoSync().windowWidth
var context = wx.createCanvasContext('myAvatar');
var size = windowWidth /750 * 500
// var size = 500
context.drawImage(res[0].path, 0, 0, size, size);
context.draw(true)
context.save();
context.drawImage('../../'+res[1].path, 0, 0, size, size);
context.draw(true)
context.save();
})
wx.hideLoading()
},
第三步:下载合成的图片到本地相册。
canvasToTempFile(){
if(!this.data.userInfo){
wx.showModal({
title: '温馨提示',
content: '请先点击上方获取微信头像',
showCancel: false,
})
return
}
var windowWidth = wx.getSystemInfoSync().windowWidth
var size = 500
// var dpr = 750 / windowWidth
wx.canvasToTempFilePath({
x: 0,
y: 0,
height: size,
width: size,
canvasId: 'myAvatar',
success: (res) => {
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: result => {
wx.hideLoading();
wx.showModal({
content: '图片已保存到相册,请前往微信去设置哟!',
showCancel: false,
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
}
}
})
}, fail(e) {
wx.hideLoading();
console.log("err:" + e);
}
})
}
});
},
这样就实现了主要的功能了。
最后放上小程序码,欢迎大家扫码体验一下:
最后 当前项目已开源:hackun666/new-year-face: wechat new year face maker (github.com)
祝大家春节快乐,虎年大吉!
来源:https://juejin.cn/post/7057807283463389191


猜你喜欢
- 1.mysql多实例mysql多实例是指在一台或多台机器上跑多个mysql数据库,大大节省开销的费用,方便管理数据内容。2.环境设备系统版本
- 在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找 "%a%" 时,返回的可能有中文字符,
- 前沿小补充例3.48 查询平均成绩大于等于80分的学生学号和平均成绩SELECT Sno,AVG(Grade)FROM SCWHERE AV
- GMSSL模块介绍GmSSL是一个开源的加密包的python实现,支持SM2/SM3/SM4等国密(国家商用密码)算法、项目采用对商业应用友
- time库是python中处理时间的标准库。计算机时间的表达:time()、ctime()、gmtime();提供获取系统时间并格式化输出功
- python函数的参数类型和返回类型默认为int。如果需要传递一个float值给dll,那么需要指定参数的类型。如果需要返回一个flaot值
- jQuery 将马上发布 1.4 正式版,代码也从 googlecode 上迁移到了 github. jQuery 是我接触的第一个 JS
- 刚刚接触springboot,对很多东西都不熟悉,例如,它的注解方式,他的配置方式等;听说它很牛逼,所以就尝试着去学习。在基本熟悉sprin
- 最近在重新看vue3的rfcs,发现一个细节,原话如下:props that start with on are handled as v-
- 小书学习的主要方向是TensorFlow和Pytorch,今天就来安装一下Pytorch。第一步:去官网看看Pytorch官网:(https
- 效果如下:代码如下:<!DOCTYPE html><html> <head> <meta char
- 本文给大家分享Python解释器安装以及PyCharm安装过程。很多朋友问小编要完整的安装教程,现分享给大家。一、Python解释器安装解释
- Matplotlib介绍Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy
- Python 是一种功能强大的语言,广泛用于自动执行各种任务。无论您是开发人员、系统管理员,还是只是想通过自动化日常任务来节省时间的人,Py
- 这里使用FSO对象来删除指定文件夹 代码和说明如下:<% set fs=createobject(&qu
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML&nb
- 前言最近在看测试相关的内容,发现自动化测试很好玩,就决定做一个自动回复QQ消息的脚本(我很菜)1、需要安装的模块这个自动化脚本需要用到3个模
- Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android、iOS等设备完成自动化测试,比如模拟点
- 从实时视频流中识别出人脸区域,从原理上看,其依然属于机器学习的领域之一,本质上与谷歌利用深度学习识别出猫没有什么区别。程序通过大量的人脸图片
- 一、在 VS Code 中配置调试使用 Vue CLI 2搭建项目时:更新 config/index.js 内的 devtool prope