JS+canvas操作gif动图

这次给大家带来JS+canvas操作gif动图,JS+canvas操作gif动图的注意事项有哪些,下面就是实战案例,一起来看一下。

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

HTML代码:

JS+canvas操作gif动图

登录后复制

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

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

HTML标签与DOM节点结合

js禁止浏览器后退事件

以上就是JS+canvas操作gif动图的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2770881.html

(0)
上一篇 2025年3月8日 12:43:08
下一篇 2025年2月24日 21:05:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS+正则的使用技巧

    这次给大家带来JS+正则的使用技巧,JS+正则使用的注意事项有哪些,下面就是实战案例,一起来看一下。 var msg=”dsada[emoji:37]dsadas[emoji:3900]法拉綏芬河”;function fetch(msg) …

    编程技术 2025年3月8日
    200
  • Node.js文件系统操作

    这次给大家带来Node.js文件系统操作,Node.js文件系统操作的注意事项有哪些,下面就是实战案例,一起来看一下。 1. 同步方法与异步方法 在Node.js中,使用fs模块来实现所有有关文件及目录的创建、写入及删除操作。,在fs模块中…

    编程技术 2025年3月8日
    200
  • js链表使用详解

    这次给大家带来js链表使用详解,js链表使用的注意事项有哪些,下面就是实战案例,一起来看一下。 如下所示: Document function Node(v){ this.value=v; this.next=null; } functio…

    编程技术 2025年3月8日
    200
  • 页面内引入js有哪些方法

    这次给大家带来页面内引入js有哪些方法,页面内引入js的注意事项有哪些,下面就是实战案例,一起来看一下。 在页面中引入js有两种基本方式:在页面中嵌入js、引用外部js文件。 一、在页面中嵌入js 这是在页面使用js最简单的方式了,一般我在…

    编程技术 2025年3月8日
    200
  • node.js操作音视频文件进行加密

    这次给大家带来node.js操作音视频文件进行加密,node.js操作音视频文件进行加密的注意事项有哪些,下面就是实战案例,一起来看一下。 fs.readFile(‘./downsuccess/’+name+”, {flag: ‘r+’,…

    编程技术 2025年3月8日
    200
  • js发布者订阅者模式使用详解

    这次给大家带来js发布者订阅者模式使用详解,js发布者订阅者模式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 发布者订阅者模式,是一种很常见的模式,比如: 一、买卖房子 生活中的买房,卖房,中介就构成了一个发布订阅者模式,买房的人…

    编程技术 2025年3月8日
    200
  • js如何设置禁止表单重复提交

                    function formsubmit() {  Today = new Date();  var NowHour = Today.getHours();  var NowMinute = Today.get…

    编程技术 2025年3月8日
    200
  • canvas怎么编辑操作图像

    这次给大家带来canvas怎么编辑操作图像,canvas编辑操作图像的注意事项有哪些,下面就是实战案例,一起来看一下。 本次文章将分为几个小功能的形式来详细介绍canvas图像编辑 缩放 下面是一张分析图,假设默认情况下,图片和canvas…

    编程技术 2025年3月8日
    200
  • JS实现排序方法总结

    这次给大家带来JS实现排序方法总结,JS实现排序的注意事项有哪些,下面就是实战案例,一起来看一下。 冒泡排序 function Bubble(arr){ var temp; for(var i=0;i<arr.length-1;i++…

    编程技术 2025年3月8日
    200
  • js设置元素样式步奏详解

    这次给大家带来js设置元素样式步奏详解,js设置元素样式的注意事项有哪些,下面就是实战案例,一起来看一下。 很多人对于js的开发中,不知道其元素样式具体怎么设置,这次文章就给大家带来js设置教程,让大家更好的了解js怎么设置的,感兴趣的下面…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论