html5canvas下绘制gif,JS+canvas操作gif动图
这次给大家带来JS+canvas操作gif动图,JS+canvas操作gif动图的注意事项有哪些,下面就是实战案例,一起来看一下。
HTML5 canvas可以读取图片信息,绘制当前图片。于是可以实现图片马赛克,模糊,色值过滤等很多图片特效。我们这里不用那么复杂,只要读取我们的图片,重绘下就可以。
HTML代码:
JS代码:if('getContext'indocument.createElement('canvas')) {
HTMLImageElement.prototype.play =function() {
if(this.storeCanvas) {
// 移除存储的canvas
this.storeCanvas.parentElement.removeChild(this.storeCanvas);
this.storeCanvas =null;
// 透明度还原
image.style.opacity ='';
}
if(this.storeUrl) {
this.src =this.storeUrl;
}
};
HTMLImageElement.prototype.stop =function() {
varcanvas = document.createElement('canvas');
// 尺寸
varwidth =this.width, height =this.height;
if(width && height) {
// 存储之前的地址
if(!this.storeUrl) {
this.storeUrl =this.src;
}
// canvas大小
canvas.width = width;
canvas.height = height;
// 绘制图片帧(第一帧)
canvas.getContext('2d').drawImage(this, 0, 0, width, height);
// 重置当前图片
try{
this.src = canvas.toDataURL("image/gif");
}catch(e) {
// 跨域
this.removeAttribute('src');
// 载入canvas元素
canvas.style.position ='absolute';
// 前面插入图片
this.parentElement.insertBefore(canvas,this);
// 隐藏原图
this.style.opacity ='0';
// 存储canvas
this.storeCanvas = canvas;
}
}
};
}
varimage = document.getElementById("testImg"),
button = document.getElementById("testBtn");
if(image && button) {
button.onclick =function() {
if(this.value =='停止') {
image.stop();
this.value ='播放';
}else{
image.play();
this.value ='停止';
}
};
}
上面代码并未详尽测试,以及可能的体验问题(IE闪动)没有具体处理(影响原理示意),若要实际使用,需要自己再微调完美下。
不足:
1. IE9+支持。IE7/IE8不支持canvas没搞头。
2. 只能停止gif,不能真正意义的暂停。因为canvas获得的gif图片信息为第一帧的信息,后面的貌似获取不到。要想实现暂停,而不是停止,还需要进一步研究,如果你有方法,非常欢迎分享。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
html5canvas下绘制gif,JS+canvas操作gif动图相关推荐
- 关于canvas插入gif动图的替代方案
前言:目前canvas是不支持插入gif动图的,但是有些业务要求开发人员可以将gif动图插入到canvas中并进行一系列的操作(移动,缩放,旋转),本人也在网上找了一圈,也没有什么有效的方式,基本都是 ...
- canvas 基础 和 动图案例
<canvas> 是 HTML5 新增的一种标签,一个可以使用脚本(通常为JavaScript)在其中绘制图的 HTML 元素.它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚 ...
- fabric.js 封装雪碧动图
看到的效果如下: 图片来源: 1. fabric.js官网示例里----自己去下载png, 2. Knova 官网雪碧图示例里面的---自己去下载png. 说明下: ① 实现原理和fabric.j ...
- libgif.js javascript拆分gif动图并导出保存为json格式文件(记录纯代码)
libgif.js 接上文Cesium添加GIF图 libgif.js+Cesium.CallbackProperty扩展libgif.js的使用 let gifimg = document.getE ...
- 用php语句绘制圆锥,JS+canvas画一个圆锥实例代码_javascript技巧
本篇文章给大家讲解html中用canvas函数配合JS画出一个圆锥形的图形实例,canvas是html5中新增加的新属性,对HTML5中的canvas感兴趣的朋友学习测试下吧. 以下是我们给大家分享是 ...
- android下拉弹性gif,android-pulltorefresh 下拉加载中使用gif动图
效果预览: xml布局 xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_width=" ...
- MySQL简单操作(内置Gif动图)
什么是MySQL MySQL结构分为库.表.字段 简单打个比方 库 == 文件夹 表 == Excel文件 字段 == 列名称 字段其实就是对某列数据的概括,比如上面的id.name.age.scho ...
- D3.js + Canvas 绘制组织结构图
D3.js + Canvas 绘制组织结构图 使用 D3.js 默认的 svg 渲染 D3默认的树状图画图使用的是svg, 比如这个来自D3作者的例子: https://bl.ocks.org/mbo ...
- PHP绘制99的棋盘,JS canvas绘制五子棋的棋盘
本文为大家分享了JS canvas绘制五子棋棋盘的具体代码,供大家参考,具体内容如下 box-shadow:给元素块周边添加阴影效果. 语法:box-shadow: h-shadow v-shadow ...
最新文章
- 那些在海外市场奋斗的华为人
- 时间管理大师!一程序员同时给谷歌和 Facebook 打工??
- mysql 获取数据列号_如何获得mysql数据库的所有的列
- windows server 2003上安装mysql的问题
- Apache Shiro的运行流程和权限控制方式分析
- Asp.net(C#)-显示所有缓存 清除所有缓存
- java mybatis 返回map_mybatis返回map集合的格式是什么?mybatis返回map集合实例
- 堪称神器的命令行工具系列——curl
- mac80211概览
- 软件工程第二次作业中第一个作业
- 订单接收不同业务消息设计
- bash/shell编程学习(1)
- java 实现pdf 转图片_java实现pdf转图片pdf
- python 正态分布函数_正态分布概率计算
- 面试后要请你吃饭_请面试官吃饭应该聊些什么?
- 传智播客对大学的期许
- 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
- dataguard配置及数据测试
- Beautiful Soup 4.4.0 文档
- 美拍里的视频要去哪里批量保存到电脑上