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 相关文章推荐
<script defer> defer 是什么意思
May 10 Javascript
jquery form表单提交插件asp.net后台中文解码
Jun 12 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
js匿名函数的调用示例(形式多种多样)
Aug 20 Javascript
AngularJS基础学习笔记之控制器
May 10 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
Aug 05 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
Mar 01 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 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中jsonp的跨域实例
2013/06/21 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python冲顶大会 快来答题!
2018/01/17 Python
python导入坐标点的具体操作
2019/05/10 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
支教自我鉴定
2014/01/18 职场文书
高三生物教学反思
2014/01/25 职场文书
交通事故检查书范文
2014/01/30 职场文书
老龄工作先进事迹
2014/08/15 职场文书
实习介绍信模板
2015/01/30 职场文书
辞职信格式范文
2015/05/13 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Python中的套接字编程是什么?
2021/06/21 Python
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle