HTML5 canvas可以读取图片信息,绘制当前图片。于是可以实现图片马赛克,模糊,色值过滤等很多图片特效。我们这里不用那么复杂,只要读取我们的图片,重绘下就可以。

JS代码:

图片帧(第一帧)

canvas.getContext('2d').drawImage(this,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;

}

}

};

}

var image = 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图片信息为第一帧的信息,后面的貌似获取不到。要想实现暂停,而不是停止,还需要进一步研究,如果你有方法,非常欢迎分享。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

html5 gif 只播放一次,使用JS和canvas实现gif动图的停止和播放代码相关推荐

  1. html5canvas下绘制gif,JS+canvas操作gif动图

    这次给大家带来JS+canvas操作gif动图,JS+canvas操作gif动图的注意事项有哪些,下面就是实战案例,一起来看一下. HTML5 canvas可以读取图片信息,绘制当前图片.于是可以实现 ...

  2. Three.js基于Canvas的文字贴图

    Three.js基于Canvas的文字贴图 居中对齐,对中文文字做了长度兼容处理,可根据开发需求自行构造Canvas贴图 const createLabel = () => {const nam ...

  3. 【Canvas】js用Canvas绘制漩涡螺旋图动画效果

    学习JavaScript编程,会用Canvas画图吗,学会它,能画很多有趣的事物,可自由发挥想象,会发现图形学的美,收获很多,这里有一个例子,如何用canvas画漩涡螺旋图动图效果,接下来开始讲,边学 ...

  4. CSS或JS实现gif动态图片的停止与播放

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5081 一. 对于习 ...

  5. vue中利用gif.js实现GIF动图下载

    前言 gif.js可以将帧图或者canvas拼成新的gif,gif.js没有npm install的库,引用方式如下: 1. 下载资源 首先从官方仓库上下载代码,worker不能跨域,所以资源必然是放 ...

  6. JS不跨域操控网易云音乐外链播放器

    JS不跨域操控网易云音乐外链播放器 今天写个人网站,用到了背景音乐. 一开始想使用H5的audio标签,蛮成功的,但是传到服务器上后加载缓慢(腾讯云服务器学生优惠版,最低的配置),体验很差. 使用外链 ...

  7. gif在html里为何会自动停止,CSS或JS实现gif动态图片的停止与播放

    一.屋外:寒风吹,雪花飘:屋内:空调吹,代码飘 上午出去买菜,正好下雨了,还夹杂着冰珠子.鄙人大意,穿的是一件帅气但单薄的黄色大衣,立马冻成了中华田园犬.原本计划去钓鱼的,科科,作罢,上午在家看CCT ...

  8. JS 用CANVAS自定义VIDEO播放器

    JS 用CANVAS自定义VIDEO播放器 概述 CANVAS绘制核心代码 播放器代码 使用页面HTML代码 使用页面JS代码 使用示例 概述 HTML5用规范的VIDEO标签取代了以往需要借助外部控 ...

  9. 播放器事件/与JS交互

    播放器事件: 名称 说明 s2j_onPlayerInitOver 播放器初始化完毕时触发.播放器提供的方法需要在此事件发生后才可以调用. s2j_onReadyPlay 在已加载足够的数据能够开始播 ...

  10. 小型音乐播放器插件APlayer.js的简单使用例子

      本篇博客将会给出一个小型音乐播放器插件APlayer.js的使用例子.关于APlayer.js的具体介绍和Github地址,可以参考: https://github.com/MoePlayer/. ...

最新文章

  1. PLSQL Developer设置及快捷键设置
  2. 超详细的Python matplotlib 绘制柱状图
  3. 揭秘微软全球最大数据中心
  4. Java开发者 IntelliJ IDEA 转换 VScode 时的优缺点
  5. 58金融产品经理董宁:互金产品设计21问
  6. Layui上传文件时choose事件只触发一次的问题(两种解决方案+最终解决方案源码)
  7. Java_斐波那契数列_兔子生兔子算法
  8. [翻译]延迟着色(1)
  9. mac USB串口工具配置
  10. 织梦数据库改mysql前缀_织梦快速批量修改MYSQL数据库表前缀与表名实例操作
  11. Angularjs 观察者模式 理解
  12. mysql 条件触发器_具有条件的MySQL更新触发器(MySQL Update Trigger with Conditions)
  13. 11.PHP-FPM pool
  14. 安装ghost win7后未能启动服务器,ghost win7系统安装全教程 ghost win7启动失败怎么办...
  15. cyclone小知识(四)——利用cyclone和PS制作点云剖面图(包括画直角坐标系)
  16. python开平方计算(求平方根)
  17. 如何在Mysql中运行SQL文件
  18. 如何提升Excel水平?5个Excel常用技巧,学会不加班
  19. SendCloud从注册到邮件发送使用心得
  20. (HDU - 3709)Balanced Number(数位DP)

热门文章

  1. 【学习笔记】揭秘阿里CDN核心技术
  2. Unity Remote5 使用
  3. PHP性能 - php_performance - by llia alshanetsky
  4. 亮度均匀性 matlab,亮度均匀性(Uniformity)
  5. SEP8266 由零开始(一),最小系统,下载,与WiFi建立
  6. 腾讯音乐管理层调整:联席总裁谢国民辞职 谢振宇兼任CTO
  7. 数据库概念设计与逻辑设计
  8. 7寸显示器 树莓派4b_基于树莓派4B显示屏分类
  9. linux:挂载、rpm、yum、scp、ssh、crontab、时钟同步
  10. 让微积分穿梭于工作与学习之间(23):用极限的思想把一元一次方程和一元二次方程的根式解统一起来