Maison > interface Web > Tutoriel H5 > le corps du texte

Comment utiliser le canevas HTML5 pour implémenter une mosaïque d'images

不言
Libérer: 2018-12-01 16:50:49
original
4477 Les gens l'ont consulté

Le canevas HTML5 peut gérer de nombreux problèmes d'image, alors comment utiliser le canevas HTML5 pour réaliser une mosaïque d'images ? Cet article vous présentera comment implémenter une mosaïque d'images dans un canevas HTML5. Examinons ensemble le contenu spécifique.

HTML5 canvas

Nous donnons d'abord le code, puis analysons

Le code mosaïque de l'image d'implémentation du canevas HTML5 est le suivant

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
	<meta charset="utf-8" />
  <script type="text/javascript">
    var imageData;    
function draw() {
      var canvas = document.getElementById(&#39;SimpleCanvas&#39;);      
      var mem_canvas = document.createElement(&#39;canvas&#39;);      
      if (!canvas || !canvas.getContext) {
              return false;
      }      
      var context = canvas.getContext(&#39;2d&#39;);      
      var img = new Image();
      img.onload = function onImageLoad() {
        mem_canvas.width = img.width;
        mem_canvas.height = img.height;        
      var mem_context = mem_canvas.getContext(&#39;2d&#39;);
        mem_context.drawImage(img, 0, 0);

        imageData = mem_context.getImageData(0, 0, mem_canvas.width, mem_canvas.height);
        CreateMosaic(mem_context, mem_canvas.width, mem_canvas.height, 8);

        context.drawImage(mem_canvas, 32, 32);
      }
      img.src = &#39;img/luffy.jpg&#39;; 
    }    
      function CreateMosaic(context, width,height,mosaicSize) {
            var x=0;      
            var y=0;      
            for (y = 0; y < height; y = y + mosaicSize) {
                    for (x = 0; x < width; x = x + mosaicSize) {          
                    var cR = imageData.data[(y * width + x) * 4];          
                    var cG = imageData.data[(y * width + x) * 4 + 1];          
                    var cB = imageData.data[(y * width + x) * 4 + 2];

          context.fillStyle = "rgb("+cR+","+cG+","+cB+")";
          context.fillRect(x, y, x + mosaicSize, y + mosaicSize);
        }
      }
    }  
</script>
</head>
<body onload="draw()" style="background-color:#D0D0D0;">
  <canvas id="SimpleCanvas" width="640" height="360" style="background-color:#FFFFFF;"></canvas>
  <div>Canvas Demo</div>
  <div id="output"></div>
</body>
</html>
Copier après la connexion

Explication :

La fonction on de la balise body remplit la fonction de dessin lorsque la page est affichée.
La fonction draw crée un objet canevas HTML en mémoire, lit l'image originale et la dessine sur le canevas. Appelez la méthode getImageData de l’objet canevas rendu pour obtenir des informations sur les pixels.

   function draw() {
         var canvas = document.getElementById(&#39;SimpleCanvas&#39;);      
         var mem_canvas = document.createElement(&#39;canvas&#39;);
      if (!canvas || !canvas.getContext) {
                 return false;
      }
      var context = canvas.getContext(&#39;2d&#39;);
      var img = new Image();
      img.onload = function onImageLoad() {
        mem_canvas.width = img.width;
        mem_canvas.height = img.height;
        var mem_context = mem_canvas.getContext(&#39;2d&#39;);
        mem_context.drawImage(img, 0, 0);
        imageData = mem_context.getImageData(0, 0, mem_canvas.width, mem_canvas.height);
        CreateMosaic(mem_context, mem_canvas.width, mem_canvas.height, 8);
        context.drawImage(mem_canvas, 32, 32);
      }
      img.src = &#39;img/luffy.jpg&#39;; 
    }
Copier après la connexion

Utilise la largeur et la hauteur de lecture de l'image originale, le contexte du canevas HTML, la taille de la mosaïque et les informations en pixels de l'image originale pour effectuer le traitement de la mosaïque. Le traitement mosaïque est implémenté par la fonction CreateMosaic(). Étant donné que la taille des informations en pixels de l'image est grande, elles ne sont pas stockées dans les paramètres de la fonction CreateMosaic(), mais sont stockées dans une variable globale. Si vous souhaitez améliorer la lisibilité de votre code, vous pouvez donner une structure aux paramètres de la fonction CreateMosaic().
Utilisez une boucle dans CreateMosaic pour obtenir la valeur de pixel en fonction de la taille de la mosaïque. Si la taille de la mosaïque est de 4, vous pouvez obtenir la valeur de pixel tous les 4 pixels et utiliser la couleur de la valeur de pixel obtenue pour dessiner le carré. taille de la mosaïque sur la toile

 function CreateMosaic(context, width,height,mosaicSize) {
       var x=0;      
       var y=0;
      for (y = 0; y < height; y = y + mosaicSize) {
               for (x = 0; x < width; x = x + mosaicSize) {          
          var cR = imageData.data[(y * width + x) * 4];          
               var cG = imageData.data[(y * width + x) * 4 + 1];          
               var cB = imageData.data[(y * width + x) * 4 + 2];
          context.fillStyle = "rgb("+cR+","+cG+","+cB+")";
          context.fillRect(x, y, x + mosaicSize, y + mosaicSize);
        }
      }
    }
Copier après la connexion

Résultats d'exécution :

Comment utiliser le canevas HTML5 pour implémenter une mosaïque dimages

Changements dans la profondeur de la mosaïque

CreateMosaic(mem_context, mem_canvas.width, mem_canvas.height, 8);
Copier après la connexion

Changez simplement le quart de CreateMosaic. La valeur de chaque paramètre peut modifier la profondeur de la mosaïque.

L'effet mosaïque de l'image lorsque la quatrième valeur du paramètre est 4

HTML5 canvas

L'image lorsque la valeur du quatrième paramètre est 2 Mosaïque effet

HTML5 canvas

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