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 相关文章推荐
js类中的公有变量和私有变量
Jul 24 Javascript
最简单的js图片切换效果实现代码
Sep 24 Javascript
仿百度输入框智能提示的js代码
Aug 22 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
JS加载器如何动态加载外部js文件
May 26 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
javascript中replace使用方法总结
Mar 01 Javascript
浅析Visual Studio Code断点调试Vue
Feb 27 Javascript
微信小程序常见页面跳转操作简单示例
May 01 Javascript
vue改变循环遍历后的数据实例
Nov 07 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
Nov 13 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类(查找/修改)xml文档
2013/03/26 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
如何打开php的gd2库
2017/02/09 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
JQuery优缺点分析说明
2011/04/10 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
django url到views参数传递的实例
2019/07/19 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
粗加工管理制度
2014/02/04 职场文书
《自选商场》教学反思
2014/02/14 职场文书
社区食品安全实施方案
2014/03/28 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
求职自我推荐信
2015/03/24 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript