Maison > interface Web > js tutoriel > Explication détaillée de la façon d'utiliser JS et Canvas pour arrêter et lire des animations GIF

Explication détaillée de la façon d'utiliser JS et Canvas pour arrêter et lire des animations GIF

巴扎黑
Libérer: 2017-09-02 14:12:05
original
2082 Les gens l'ont consulté

Cet article présente principalement l'utilisation de JS et de Canvas pour implémenter le code stop and play des animations gif. Il est d'une grande valeur pratique. Les amis dans le besoin peuvent s'y référer

Le canevas HTML5 peut lire les informations sur les images. et dessinez l’image actuelle. Par conséquent, de nombreux effets spéciaux d'image tels que la mosaïque d'image, le flou, le filtrage des valeurs de couleur, etc. peuvent être réalisés. Nous n’avons pas besoin d’être si compliqué ici, il nous suffit de lire notre image et de la redessiner.


Code HTML :


<img id="testImg" src="xxx.gif" width="224" height="126">
<p><input type="button" id="testBtn" value="停止"></p>
Copier après la connexion

Code JS :


if (&#39;getContext&#39; in document.createElement(&#39;canvas&#39;)) {
 HTMLImageElement.prototype.play = function() {
  if (this.storeCanvas) {
   // 移除存储的canvas
   this.storeCanvas.parentElement.removeChild(this.storeCanvas);
   this.storeCanvas = null;
   // 透明度还原
   image.style.opacity = &#39;&#39;;
  }
  if (this.storeUrl) {
   this.src = this.storeUrl; 
  }
 };
 HTMLImageElement.prototype.stop = function() {
  var canvas = document.createElement(&#39;canvas&#39;);
  // 尺寸
  var width = this.width, height = this.height;
  if (width && height) {
   // 存储之前的地址
   if (!this.storeUrl) {
    this.storeUrl = this.src;
   }
   // canvas大小
   canvas.width = width;
   canvas.height = height;
   // 绘制图片帧(第一帧)
   canvas.getContext(&#39;2d&#39;).drawImage(this, 0, 0, width, height);
   // 重置当前图片
   try {
    this.src = canvas.toDataURL("image/gif");
   } catch(e) {
    // 跨域
    this.removeAttribute(&#39;src&#39;);
    // 载入canvas元素
    canvas.style.position = &#39;absolute&#39;;
    // 前面插入图片
    this.parentElement.insertBefore(canvas, this);
    // 隐藏原图
    this.style.opacity = &#39;0&#39;;
    // 存储canvas
    this.storeCanvas = canvas;
   }
  }
 };
}
 
var image = document.getElementById("testImg"), 
 button = document.getElementById("testBtn");
 
if (image && button) {
 button.onclick = function() {
  if (this.value == &#39;停止&#39;) {
   image.stop();
   this.value = &#39;播放&#39;;
  } else {
   image.play();
   this.value = &#39;停止&#39;;
  }
 };
}
Copier après la connexion

Le code ci-dessus n'a pas été testé en détail, et d'éventuels problèmes d'expérience (clignotement IE) n'ont pas été spécifiquement traités (illustration du principe d'impact) Si vous souhaitez réellement l'utiliser, vous devez le peaufiner vous-même pour le rendre parfait.

Inadéquation :

1. IE7/IE8 ne prend pas en charge le canevas.

2. Vous pouvez uniquement arrêter le gif, mais pas la vraie pause. Étant donné que les informations sur l'image GIF obtenues par Canvas sont les informations de la première image, il semble que les suivantes ne puissent pas être obtenues. Pour parvenir à une pause au lieu d'un arrêt, des recherches supplémentaires sont nécessaires. Si vous avez une méthode, n'hésitez pas à la partager.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal