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 相关文章推荐
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
gridpanel动态加载数据的实例代码
Jul 18 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
ES6的新特性概览
Mar 10 Javascript
JS控制TreeView的结点选择
Nov 11 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
Apr 24 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
Apr 20 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
使用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
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
基于python3生成标签云代码解析
2020/02/18 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
为什么需要版本控制?
2013/08/08 面试题
升职自荐信
2013/11/28 职场文书
财务会计专业推荐信
2013/11/30 职场文书
理工科学生的自我评价
2013/12/15 职场文书
同学聚会策划方案
2014/06/06 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
年会邀请函范文
2015/01/30 职场文书
Golang map映射的用法
2022/04/22 Golang