我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android怎么实现虎年头像框制作小程序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android怎么实现虎年头像框制作小程序

本文小编为大家详细介绍“Android怎么实现虎年头像框制作小程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么实现虎年头像框制作小程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1、实现原理

通过效果图可以看到,在这个地方用到了两张图片:

一张是通过“获取头像”按钮获取的微信用户的头像,用作底图;

另外一张是相框图片,这是预制的静态资源;

在点击“保存头像”的时候,将上面两张图片分别通过canvas画到画板上,先画底图,在画相框图,绘制完成后将画板上的图片保存到本地就完事了。

下面开始介绍具体的实现步骤。

2、收集静态资源

在我这个小程序中内置了一些静态资源,比如:头像框图片、首页背景图片、底部导航栏图标等。

3、编码

分为三个部分介绍编码这个阶段。

3.1 获取微信用户头像

微信小程序提供有api获取微信用户信息。 wx.getUserProfile(Object object)

通过button按钮点击,获取微信用户信息:

<button bindtap="getUserProfile" class="btn1">获取头像</button>

getUserProfile实现如下:

    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认    getUserProfile(e) {      let that = this;      wx.getUserProfile({          desc: '仅用于生成头像使用', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写          success: (res) => {            //获取高清用户头像            let 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;            that.setData({              userInfo: res.userInfo,              hasUserInfo: true            })          }        });    },

到这里获取微信用户头像已经完成。

备注: 通过res.userInfo默认返回来的用户头像是低分辨率的,要获取用户头像高清图需要进行处理。

3.2 绘制图像

绘制图主要用到了微信小程序提供画布相关API

变量说明:

hotArr:[{name:'虎年相框',key:'hunian'},{name:'虎头帽子',key:'shendan'},{name:'国旗',key:'guoqing'}],

curHot:用于存放当前选择的hotArr的索引。

windowWidth:  wx.getSystemInfoSync().windowWidth

size: 260; //自定义的大小

pc : wx.createCanvasContext('myCanvas');

drawImg(){      wx.showLoading({        title: '生成头像中...',      })      let that = this;      let type = this.data.hotArr[this.data.curHot].key;      let promise1 = new Promise(function(resolve, reject) {        wx.getImageInfo({          class="lazy" data-src: that.data.userInfo.avatarUrl,          success: function(res) {            resolve(res);          }        })      });      var index = that.data.defaultImg;      let promise2 = new Promise(function(resolve, reject) {        wx.getImageInfo({          class="lazy" data-src: `../../images/${type}/hat${index}.png`,          success: function(res) {            resolve(res);          }        })      });      Promise.all([        promise1, promise2      ]).then(res => {        //主要就是计算好各个图文的位置        pc.clearRect(0, 0, windowWidth, size);        //绘制背景图        pc.drawImage(res[0].path, windowWidth/2-130, 0, size, size)        //绘制相框图        pc.drawImage('../../' + res[1].path, windowWidth/2-130, 0, size, size)        pc.stroke()        pc.draw(false, () => {            //图片绘制成功回调,调用保存canvas方法            this.canvasToTempFile();        })      })    },

wx.getImageInfo() 主要用于获取图片的信息,返回图片的本地路径;

这个地方主要是因为drawImage() 只支持绘制本地图片。

3.3 保存图像

在上一步我们已经将两张图片绘制到画布上面了,下面将画布上的内容保存到本地。

保存画布上的内容到本地相册也分为两步。

把当前画布指定区域的内容导出生成指定大小的图片。

通过使用 wx.canvasToTempFilePath()

将保存图片本地相册。

通过使用 wx.saveImageToPhotosAlbum(https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.saveImageToPhotosAlbum.html)

 canvasToTempFile(){    wx.canvasToTempFilePath({      x: windowWidth/2-130,  //这个地方减去130是因为我们的图片尺寸设置的是260      y: 0,      height: size,      width: size,      canvasId: 'myCanvas',      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);          }        })      }    });  },

到这里也就实现了基本的头像框功能。

读到这里,这篇“Android怎么实现虎年头像框制作小程序”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android怎么实现虎年头像框制作小程序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android怎么实现虎年头像框制作小程序

本文小编为大家详细介绍“Android怎么实现虎年头像框制作小程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么实现虎年头像框制作小程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、实现原
2023-06-26

微信小程序如何实现虎年春节头像制作

这篇文章主要介绍微信小程序如何实现虎年春节头像制作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上最终效果图:说下实现流程第一步:先获取到当前微信的头像图片,主要代码如下,注意默认获取到的头像图片不是高清的,需要先
2023-06-29

怎么开发一个虎年春节头像生成小程序

怎么开发一个虎年春节头像生成小程序,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。马上就到春节了,今天看到有网友分享了网页版的虎年头像制作工具,感觉很不错,正好打算做个小程序
2023-06-29

如何使用PHP实现微信小程序的头像制作功能?

如何使用PHP实现微信小程序的头像制作功能?微信小程序作为一种新型的移动应用形式,受到了越来越多开发者的关注和喜爱。其中,头像制作功能是小程序中常见的一种功能,可以让用户通过选择不同的头像框或者添加自己喜欢的元素来制作个性化的头像。实现头像
2023-10-26

怎么用uni-app制作小程序实现左右菜单联动效果

这篇文章主要介绍“怎么用uni-app制作小程序实现左右菜单联动效果”,在日常操作中,相信很多人在怎么用uni-app制作小程序实现左右菜单联动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用uni-
2023-07-04

微信小程序制作海报并分享到朋友圈怎么实现

本篇内容介绍了“微信小程序制作海报并分享到朋友圈怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!添加画布首先,在小程序里进行绘图操作需
2023-06-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录