canvas+gif.js打造自己的数字雨头像的示例代码


Posted in Javascript onOctober 26, 2017

前天 是1024程序员节,不知道各位看官过的怎么样。既然是过节,就要有个过节的样子,比方说,换个头像?。你看我的头像牛逼不。今天介绍一个小demo,上传一个静态头像,就能得到一个动态的数字雨头像。抢先体验传送门](https://imgss.github.io/demo/gif/)

canvas+gif.js打造自己的数字雨头像的示例代码

使用说明

1.传一个你喜欢的头像,最后是正方形的

2.生成后看字符颜色是不是太诡异,可以改变字符颜色

3.觉得满意,右键另存为即可

gif.js

今天的主角是gif.js,gif.js是一个在浏览器上依靠H5api就能gif动画的库,这里介绍一下我猜的坑。关于绘制数字雨,园子里有相关文章,我就不瞎BB了。

gif.js可以很方便的根据canvas动图得到gif:

//代码来自官网

var gif = new GIF({
 workers: 2,//启用两个worker。
 quality: 10//图像质量
});//创建一个GIF实例

// 核心方法,向gif中加一帧图像,参数可以是img/canvas元素,还可以从ctx中复制一帧
gif.addFrame(imageElement);

// or a canvas element
gif.addFrame(canvasElement, {delay: 200});//一帧时长是200

// or copy the pixels from a canvas context
gif.addFrame(ctx, {copy: true});

gif.on('finished', function(blob) {//最后生成一个blob对象
 window.open(URL.createObjectURL(blob));
});

gif.render();//开始启动

整体而言,这个库的api十分简洁,友好。之前看了一个jsGif,看的云里雾里,后来才发现这么个好东西。由于生成gif图像是个耗费cpu的操作,尤其是当图像比较大的时候,因此库允许在webworker中渲染。但是文档中还是有几个要注意的地方要说明(其实是我踩的坑):

1.git.addFrame是添加一帧,要生成会动的gif,要来一个循环:

for(...){
gif.render(...)
}

2.构造函数GIF的选项中,需要workerScript选项,这样才能实现在worker中渲染图像,如下所示:

var gif = new GIF({
workers: 2,
quality: 10,
  workerScript:'./gif.worker.js'
});

源码我放在github上了,https://github.com/imgss/gif_rain_code,或者F12直接看demo。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript继承方式实例
Oct 29 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
javascript中的五种基本数据类型
Aug 26 Javascript
js实现(全选)多选按钮的方法【附实例】
Mar 30 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
node.js中EJS 模板快速入门教程
May 08 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
用vue封装插件并发布到npm的方法步骤
Oct 18 Javascript
JavaScript对象拷贝与赋值操作实例分析
Dec 10 Javascript
使用Bootrap和Vue实现仿百度搜索功能
Oct 26 #Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
Oct 26 #Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 #Javascript
webpack3之loader全解析
Oct 26 #Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 #Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 #Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
Oct 26 #Javascript
You might like
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
使用tensorflow实现线性svm
2018/09/07 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
python中比较两个列表的实例方法
2019/07/04 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
你的自行车健身专家:FaFit24
2016/11/16 全球购物
上课说话检讨书大全
2014/01/22 职场文书
社区七一党员活动方案
2014/01/25 职场文书
婚庆司仪主持词
2014/03/15 职场文书
建筑工地质量标语
2014/06/12 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
内勤岗位职责
2015/02/10 职场文书
会计试用期自我评价
2015/03/10 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python
Python实现拼音转换
2021/06/07 Python
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android
使用scrapy实现增量式爬取方式
2022/06/21 Python