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 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
Js 中debug方式
Feb 07 Javascript
jQuery的text()方法用法分析
Dec 20 Javascript
15个jquery常用方法、小技巧分享
Jan 13 Javascript
cookie的secure属性详解
Apr 08 Javascript
jquery插件格式实例分析
Jun 16 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
Webpack 服务器端代码打包的示例代码
Sep 19 Javascript
图片加载完成再执行事件的实例
Nov 16 Javascript
微信小程序如何使用globalData的方法
Jun 06 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 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面向对象public private protected 访问修饰符
2013/06/30 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
2016年元旦主持词
2015/07/06 职场文书
Python中的变量与常量
2021/11/11 Python
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS