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 相关文章推荐
javascript 循环读取JSON数据的代码
Jul 17 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
js转化毫秒为时间格式代码
Apr 10 Javascript
js获取IP地址的方法小结
Jul 01 Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
May 31 Javascript
基于BootStrap实现局部刷新分页实例代码
Aug 08 Javascript
JavaScript中一些特殊的字符运算
Aug 17 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
酒店拾金不昧表扬信
2014/01/18 职场文书
社区端午节活动方案
2014/01/28 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
CSS基础详解
2021/10/16 HTML / CSS