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 相关文章推荐
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
Aug 13 Javascript
js自执行函数的几种不同写法的比较
Aug 16 Javascript
node.js中的fs.createReadStream方法使用说明
Dec 17 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
Jul 21 Javascript
详解npm 配置项registry修改为淘宝镜像
Sep 07 Javascript
在create-react-app中使用sass的方法示例
Oct 01 Javascript
微信小程序登录态和检验注册过没的app.js写法
May 22 Javascript
Javascript三种字符串连接方式及性能比较
May 28 Javascript
JS实现“全选”和"全不选"功能代码实例
Feb 06 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 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+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python实现命令行通讯录实例教程
2016/08/18 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
python随机模块random使用方法详解
2020/02/14 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
用Python写一个for循环的例子
2016/07/19 面试题
英文版网络工程师求职信
2013/10/28 职场文书
十八大闭幕感言
2014/01/22 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
辞职信格式范文
2015/05/13 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js