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 相关文章推荐
一次失败的jQuery优化尝试小结
Feb 06 Javascript
jquery实现邮箱自动补全功能示例分享
Feb 17 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
基于jquery实现等比缩放图片
Dec 03 Javascript
用js实现放大镜的效果的简单实例
May 23 Javascript
检查表单元素的值是否为空的实例代码
Jun 16 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
通过JS判断网页是否为手机打开
Oct 28 Javascript
JavaScript动态生成表格的示例
Nov 02 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图片上传程序
2008/03/27 PHP
php daodb插入、更新与删除数据
2009/03/19 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
php计算整个目录大小的方法
2015/06/01 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
用js实现in_array的方法
2013/11/05 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
python生成并处理uuid的实现方式
2020/03/03 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
临床医学系毕业生推荐信
2013/11/09 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
市场开发计划书
2014/05/07 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS