首頁  >  文章  >  web前端  >  JS+canvas操作gif動圖

JS+canvas操作gif動圖

php中世界最好的语言
php中世界最好的语言原創
2018-04-18 15:11:465166瀏覽

這次帶給大家JS canvas操作gif動圖,JS canvas操作gif動圖的注意事項有哪些,下面就是實戰案例,一起來看一下。

HTML5 canvas可以讀取圖片訊息,繪製目前圖片。於是可以實現圖片馬賽克,模糊,色值過濾等很多圖片特效。我們這裡不用那麼複雜,只要讀取我們的圖片,重繪下就可以。

HTML程式碼:

<imgid="testImg"src="xxx.gif"width="224"height="126">
<p><inputtype="button"id="testBtn"value="停止"></p>

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中文網其它相關文章!

推薦讀取:

HTML標籤與DOM節點結合

#js禁止瀏覽器後退事件

以上是JS+canvas操作gif動圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn