这次给大家带来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动图相关推荐

  1. 关于canvas插入gif动图的替代方案

    前言:目前canvas是不支持插入gif动图的,但是有些业务要求开发人员可以将gif动图插入到canvas中并进行一系列的操作(移动,缩放,旋转),本人也在网上找了一圈,也没有什么有效的方式,基本都是 ...

  2. canvas 基础 和 动图案例

    <canvas> 是 HTML5 新增的一种标签,一个可以使用脚本(通常为JavaScript)在其中绘制图的 HTML 元素.它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚 ...

  3. fabric.js 封装雪碧动图

    看到的效果如下: 图片来源: 1.  fabric.js官网示例里----自己去下载png, 2. Knova 官网雪碧图示例里面的---自己去下载png. 说明下: ①  实现原理和fabric.j ...

  4. libgif.js javascript拆分gif动图并导出保存为json格式文件(记录纯代码)

    libgif.js 接上文Cesium添加GIF图 libgif.js+Cesium.CallbackProperty扩展libgif.js的使用 let gifimg = document.getE ...

  5. 用php语句绘制圆锥,JS+canvas画一个圆锥实例代码_javascript技巧

    本篇文章给大家讲解html中用canvas函数配合JS画出一个圆锥形的图形实例,canvas是html5中新增加的新属性,对HTML5中的canvas感兴趣的朋友学习测试下吧. 以下是我们给大家分享是 ...

  6. android下拉弹性gif,android-pulltorefresh 下拉加载中使用gif动图

    效果预览: xml布局 xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_width=" ...

  7. MySQL简单操作(内置Gif动图)

    什么是MySQL MySQL结构分为库.表.字段 简单打个比方 库 == 文件夹 表 == Excel文件 字段 == 列名称 字段其实就是对某列数据的概括,比如上面的id.name.age.scho ...

  8. D3.js + Canvas 绘制组织结构图

    D3.js + Canvas 绘制组织结构图 使用 D3.js 默认的 svg 渲染 D3默认的树状图画图使用的是svg, 比如这个来自D3作者的例子: https://bl.ocks.org/mbo ...

  9. PHP绘制99的棋盘,JS canvas绘制五子棋的棋盘

    本文为大家分享了JS canvas绘制五子棋棋盘的具体代码,供大家参考,具体内容如下 box-shadow:给元素块周边添加阴影效果. 语法:box-shadow: h-shadow v-shadow ...

最新文章

  1. 那些在海外市场奋斗的华为人
  2. 时间管理大师!一程序员同时给谷歌和 Facebook 打工??
  3. mysql 获取数据列号_如何获得mysql数据库的所有的列
  4. windows server 2003上安装mysql的问题
  5. Apache Shiro的运行流程和权限控制方式分析
  6. Asp.net(C#)-显示所有缓存 清除所有缓存
  7. java mybatis 返回map_mybatis返回map集合的格式是什么?mybatis返回map集合实例
  8. 堪称神器的命令行工具系列——curl
  9. mac80211概览
  10. 软件工程第二次作业中第一个作业
  11. 订单接收不同业务消息设计
  12. bash/shell编程学习(1)
  13. java 实现pdf 转图片_java实现pdf转图片pdf
  14. python 正态分布函数_正态分布概率计算
  15. 面试后要请你吃饭_请面试官吃饭应该聊些什么?
  16. 传智播客对大学的期许
  17. 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
  18. dataguard配置及数据测试
  19. Beautiful Soup 4.4.0 文档
  20. 美拍里的视频要去哪里批量保存到电脑上

热门文章

  1. 最全量子计算硬件概述(建议收藏)
  2. UG中怎样删除已经选好的加工模板
  3. MySQLsqlyog详细内容
  4. 【美文欣赏】给爱子的信
  5. 将知网caj格式转换成pdf格式
  6. IDEA mybatis 用户-订单-订单详情 → 互查
  7. [zz]QuickTime电影(Movie)
  8. 【数据分析 R语言实战】学习笔记 第六章 参数估计与R实现(上)
  9. 【小程序实战学习(一)】购物小程序-首页
  10. Python爬虫进阶(十):实战,Scrapy爬取贴吧