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之AJAX框架使用说明
Apr 24 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
Web制作验证码功能实例代码
Jun 19 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
May 08 Javascript
js如何找出字符串中的最长回文串
Jun 04 Javascript
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
JS实现li标签的删除
Apr 12 Javascript
vue中的面包屑导航组件实例代码
Jul 01 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
任意位置显示html菜单
2007/02/01 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
轮播的简单实现方法
2016/07/28 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python版的文曲星猜数字游戏代码
2013/09/02 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Django 拆分model和view的实现方法
2019/08/16 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
什么是类的返射机制
2016/02/06 面试题
餐饮主管岗位职责
2013/12/10 职场文书
校庆活动策划方案
2014/06/05 职场文书
师范类求职信
2014/06/21 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
廉政承诺书2015
2015/04/28 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL