Home > Web Front-end > H5 Tutorial > How to use HTML5 canvas to implement image mosaic

How to use HTML5 canvas to implement image mosaic

不言
Release: 2018-12-01 16:50:49
Original
4509 people have browsed it

HTML5 canvas can handle many image problems, so how to use HTML5 canvas to realize image mosaic? This article will introduce to you how to implement image mosaic in HTML5 canvas. Let’s take a look at the specific content together.

HTML5 canvas

We give the code first, and then analyze

HTML5 canvas implements the image mosaic code as follows

<!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>
Copy after login

Description:

The on function of the body tag performs the drawing function when the page is displayed.
The draw function creates an HTML canvas object in memory, reads the original image and draws it on the canvas. Call the rendered canvas object's getImageData method to obtain pixel information.

   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;; 
    }
Copy after login

The mosaic processing is performed using the read width and height of the original image, the context of the HTML canvas, the size of the mosaic, and the pixel information of the original image. Mosaic processing is implemented by the CreateMosaic() function. Since the pixel information size of the image is large, it is not stored in the parameters of the CreateMosaic() function, but is stored in a global variable. If you want to improve the readability of your code, you can give the CreateMosaic() function parameters a structure.
Use a loop in CreateMosaic to get the pixel value based on the mosaic size. If the mosaic size is 4, you can get the pixel value of every 4 pixels, and use the color of the obtained pixel value to draw the square mosaic size on the canvas.

 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);
        }
      }
    }
Copy after login

Running results:

How to use HTML5 canvas to implement image mosaic

Changes in the degree of mosaic

CreateMosaic(mem_context, mem_canvas.width, mem_canvas.height, 8);
Copy after login

Just change the value of the fourth parameter of CreateMosaic You can change the depth of the mosaic.

The mosaic effect of the image when the fourth parameter value is 4

HTML5 canvas

The image when the fourth parameter value is 2 Mosaic effect

HTML5 canvas

The above is the detailed content of How to use HTML5 canvas to implement image mosaic. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template