关注「编程小王子」公众号回复【头像生成器】获得源码!
下面我重点介绍一下Cocos Creator H5 头像生成的实现方法。

  1. 获取手机相册图片

  2. 在 Cocos Creator 中加载相册图片

  3. Cocos Creator 屏幕截图

  4. 使用HMTL显示截屏图片

  5. 保存图片到相册

1. 获取相册图片

要获取手机相册图片,需要使用浏览器 input 标签提供的能力,在桌面浏览器上则是浏览文件目录选择图片。
使用 document 动态创建 input HTML标签,并设置属性为type 为 file,accept 为"image/*",同时使用 CSS 控件一下 input 的位置
let input = document.createElement("input");
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.setAttribute('style', 'position:absolute;margin-left:30%;margin-top:50px;-webkit-user-select:file')
document.getElementsByTagName('body')[0].appendChild(input);
当选择好图片后,还需要监听 input 标签的 change 事件,我们好方便获取图片的数据:
let oninput = (e) => {//拿到文件对象var file = e.target.files[0];//读取文件数据reader = new FileReader();reader.readAsDataURL(file);//文件加载成功以后,渲染到页面reader.onload = (e)=> {...}
}//监听input的change事件
input.addEventListener('change', oninput);

2. 在 Cocos Creator 中加载相册图片

FileReader 的 onload 回调事件中,我们将图片放入 HTML 的 img 标签中
reader.onload = (e)=> {//创建一个img标签加载图片数据var img = document.createElement("img");img.src = e.target.result;//再通过img转换成Creator的Textures2D对象let texture = new cc.Texture2D();texture._nativeAsset = img;texture.on('load', () => {//最后设置到精灵上this.sprite.spriteFrame = new cc.SpriteFrame(texture);})
}
  1. 创建 img 标签,将读取到的图片设置到 img.src 属性

  2. 创建 cc.Texture2D 对象,加载 img 中的纹理

  3. 当 Textrue2D 的 load 事件完成,就可以显示到精灵组件上了

这里需要注意,Cocos Creator 不能显示超过2048 * 2048的图片,你会发现直接在手机上使用手机拍的高清图片显示出来是一片黑色。

3. Cocos Creator 屏幕截图

设置头像的前景框非常简单,这里就不多说了,我看怎么把合成的图片保存下来。这里是参考的Cocos Creator的范例合集中capture_to_web的做法,简单修改了一下,点击按钮生成截图:
save () {//创建 HTML canvas 标签保存图像数据this.createCanvas();//将canvas的图数据保存到HTML img元素上var img = this.createImg();//显示这个HTML img 元素this.showImage(img);this.iconBg.active = true;this.label.node.active = true;
}
这里重点看下ShowImage这个函数,我在修改了范例合集的做法:
showImage(img) {//var img = document.createElement("img");let offset = (cc.view._frameSize.width - this.srpite.node.width) / 2;let top = (cc.view._frameSize.height - this.srpite.node.width) / 2;cc.log('fs:', cc.view._frameSize.width);cc.log('offset:', offset, img.width);img.setAttribute('style', `position:absolute;margin-left:${offset}px ;margin-top:${top}px`);document.getElementsByTagName('body')[0].appendChild(img);this._img = img;
}
上面的代码主要是计算 img 元素的位置,将它放到浏览器屏幕中间。

4. 保存图片到相册

Cocos Creator 引擎在浏览器上是不能写文件的,因此我们上面是将图片用HTML img 显示,而不是用Sprite显示。我们在手机上长按 img 元素就可以调出浏览器的保存菜单了,在桌面浏览器上可以鼠标右键保存,也可以直接拖动到桌面上。

小结

使用 Cocos Creator 不仅可以开发游戏,也能制作有效的小应用,如果在头像上加载一些Shader特效是不是会更酷呢?回复【国旗】或点【击阅读原文】可以进行体验哦!
编程小王子」公众号专注青少年游戏编程启蒙,通过游戏编程了解计算机与软件开发的一般知识,学习计算机思维,并能将日常的数学 、英语、表达、创意等能力应用于编程实践之中,Shawn 的愿景是:
——让游戏编程成为教育的最强武器!

Cocos Creator 国旗头像生成器,源码奉上!相关推荐

  1. vue源码深入解读MVVM(视图模板引擎),你真的了解双向绑定(v-model),数据劫持(observe),发布订阅模式吗?带你手鲁mvvm引擎。源码奉上(详细注释)!

    文章目录 #1.vue的强大之处不必细说,vue的核心v-model的实现原理,网上都有很多.但是真正自己实现双向绑定,mvvm的源码却几乎没见过. #1.2本人根据源码的解读,理解,以及借鉴网上的视 ...

  2. 字体查看器,源码奉上

    字体查看器 用于快速查看,预览,编辑,各种字体.基于PC中已经安装字体. 源码2KB,每个人都可以由编辑修改源码. 超级方便好用.按键键盘上下键,快速切换字体. 上图: 上源码 把源码复制保存到文本文 ...

  3. 仿知识星球Android源码奉上

    高仿了一下Android版本的知识星球,但是并没有完全实现,也懒得实现了,各个功能都大同小异,我之前写过的文章如下: [如何实现知识星球列表拖拽功能] https://articles.zsxq.co ...

  4. 读取某网站视频,源码奉上,保姆级教程,赶紧收藏

    目录 1.目标网站 2:技术选型 2.1 方案A 2.2 方案B 3.安装环境 3.1 必要的环境 3.2 安装 selenium 3.3 下载 chromedriver 4.代码实现 4.1 代码 ...

  5. 【肝帝游戏】手把手教你python处理视频,越学越有趣,全部源码奉上,不信试试?

    文章目录 亮点:作品展示 推荐系列教程,推荐的一定是好的! 一.前言一定要看!!! 二.下载安装 三.视频转gif 四.视频截取 五.视频Gif缩放 六.视频修剪 七.视频堆叠 八.视频剪辑部分语法 ...

  6. 【c++经典小游戏,源码奉上(免费复制)】

    #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<time.h> #i ...

  7. PHP在线小说txt生成器源码

    PHP在线小说txt生成器源码 上传空间即可访问 上传空间即可访问,无需数据库 PHP版本设置5.6,支持上传二级目录访问! 下载地址: http://www.bytepan.com/4TvwGRa9 ...

  8. 在线微信对话生成器源码 装逼神器

    在线微信对话生成器源码,抖音微信聊天搞笑视频制作神器 微信对话生成器,是一款在线微信聊天对话制作的工具,它可以设置苹果或安卓状态栏,包括手机电量.手机时间等,还可以设置不同用户的角色,然后发送文字.语 ...

  9. 2022在线微信对话生成器源码,抖音微信聊天搞笑视频制作神器

    在线微信对话生成器源码,抖音微信聊天搞笑视频制作神器 微信对话生成器,是一款在线微信聊天对话制作的工具,它可以设置苹果或安卓状态栏,包括手机电量.手机时间等,还可以设置不同用户的角色,然后发送文字.语 ...

  10. 2022最新HTML生成国庆头像网页源码+打开即用

    正文: 2022最新的,抖音微信超火国庆节头像生成源码,静态页前端生成速度超快,源码直接上传到服务器即可使用,有兴趣的自行去体验吧. 程序: wwuefd.lanzoul.com/ikkMS0col3 ...

最新文章

  1. C 语言和 C++、C# 的区别在什么地方?
  2. Python 3.8即将发布,这几个变化你必须知道
  3. linux windows 字符编码转换,Linux操作系统下汉字编码的转换
  4. d3 line example debug 2015-05-31
  5. 1603 限高二叉排列树(计数DP)
  6. 查看代码 index.html,Javascript查看大图功能代码实现
  7. 用计算机考试时怎么返回桌面快捷键,win10系统如何使用返回桌面快捷键?快速返回到电脑桌面的方法...
  8. 发票ocr识别查验解决方案
  9. 7-33 统计素数并求和
  10. 关于生活,你可以选择-转自网络
  11. 怎么注册tk域名_新.tk域名免费注册教程
  12. Log4j2-Log4j 2介绍及使用
  13. VBS播放WMP文件
  14. 隐马尔科夫模型(HMM)等文章记录
  15. Linux-shell脚本基础
  16. RV1126RV1109 buildroot 增加GPIO测试程序
  17. ABAP VF01 / VF04销售开票增强 增加校验
  18. OpenCV中GPU版MOG2的使用
  19. 七年级上册计算机基础知识教案,七年级上册信息技术教案
  20. 导出功能: 导出为excel文档,后端做导出处理,js代码发送接口直接下载

热门文章

  1. perf_event 事件类型与分类
  2. 关于Fragment + RecyclerView + Toolbar + BottomNavigationView的组合应用
  3. 2020大学计算机知到答案,2020知到APP大学计算机(北华大学)章节测试答案
  4. 2021-01-16
  5. cur前缀_常用词根前缀
  6. 香港流行乐黄金二十年——经典歌手(音乐人)全面回顾(四)
  7. 三剑客python自学笔记--02
  8. 一个学习C语言的好网站,推荐给大家
  9. teams快捷键_每个Microsoft Teams键盘快捷键及其使用方法
  10. 3W字,Docker 从入门到精通