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 页面全选框实践代码
Apr 02 Javascript
js判断一个元素是否为另一个元素的子元素的代码
Mar 21 Javascript
Javascript数据结构与算法之列表详解
Mar 12 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
Nov 30 Javascript
vue2.0 elementUI制作面包屑导航栏
Feb 22 Javascript
vue template中slot-scope/scope的使用方法
Sep 06 Javascript
微信小程序实现动态获取元素宽高的方法分析
Dec 10 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 Javascript
史上最为详细的javascript继承(推荐)
May 18 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
TypeScript高级用法的知识点汇总
Dec 17 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
将php数组输出html表格的方法
2014/02/24 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
python 重命名轴索引的方法
2018/11/10 Python
Python多图片合并PDF的方法
2019/01/03 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
ET Mall东森购物网:东森严选
2017/03/06 全球购物
一套软件测试笔试题
2014/07/25 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
小学生读书感言
2014/02/12 职场文书
红旗方阵解说词
2014/02/12 职场文书
金融专业求职信
2014/08/05 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
迟到检讨书范文
2015/01/27 职场文书
预备党员介绍人意见
2015/06/01 职场文书