Nuevos estándares en el desarrollo de sitios web: HTML5 y CSS3

13 HTML5 - Ejemplos de canvas

Aquí hay un ejemplo sencillo sobre el uso del elemento canvas extraído de 12 Pixel manipulation:

<canvas id="canvasEdge" style="width: 100%; height: 450px"></canvas>

<script>
   var image = new Image();
   function initCanvas() {
     image.onload = demo;
     image.src = "images/ua-logo.png";
   }
   function demo() {
     var canvas = document.getElementById('canvasEdge');
     var context = canvas.getContext('2d');

     // draw the image onto the canvas
     context.drawImage(image, 0, 0);

     // get the image data to manipulate
     var input = context.getImageData(0, 0, canvas.width, canvas.height);

     // get an empty slate to put the data into
     var output = context.createImageData(canvas.width, canvas.height);

     // alias some variables for convenience
     // notice that we are using input.width and input.height here
     // as they might not be the same as canvas.width and canvas.height
     // (in particular, they might be different on high-res displays)
     var w = input.width, h = input.height;
     var inputData = input.data;
     var outputData = output.data;

     // edge detection
     for (var y = 1; y < h-1; y += 1) {
       for (var x = 1; x < w-1; x += 1) {
         for (var c = 0; c < 3; c += 1) {
           var i = (y*w + x)*4 + c;
           outputData[i] = 127 + -inputData[i - w*4 - 4] -   inputData[i - w*4] - inputData[i - w*4 + 4] +
                                 -inputData[i - 4]       + 8*inputData[i]       - inputData[i + 4] +
                                 -inputData[i + w*4 - 4] -   inputData[i + w*4] - inputData[i + w*4 + 4];
         }
         outputData[(y*w + x)*4 + 3] = 255; // alpha
       }
     }

     // put the image data back after manipulation
     context.putImageData(output, 0, 0);
   }
   
   window.onload = initCanvas;
</script>

Este ejemplo, implementa el filtro de detección de bordes. Del ejemplo, si la siguiente imagen es usada para probar este ejemplo:

Universidad de Alicante

El filtro produce la siguiente imagen (esta imagen es una captura de pantalla):

Ejemplo del filtro de detección de bordes de canvas

Y el ejemplo vivo (ver el primer ejemplo independientemente):

Your browser doesn't support <canvas> element. Please, downdload and use one of the following browsers:

  • Google Chrome
  • Mozilla Firefox
  • Opera

Aqui hay un ejemplo sencillo sobre el uso del elemento canvas extraido de 17 Examples:

<canvas id="canvasGlowing" width="800" height="450"></canvas>

<script>
 var canvas = document.getElementById('canvasGlowing');
 var context = canvas.getContext('2d');

 var lastX = context.canvas.width * Math.random();
 var lastY = context.canvas.height * Math.random();
 var hue = 0;
 function line() {
   context.save();
   context.translate(context.canvas.width/2, context.canvas.height/2);
   context.scale(0.9, 0.9);
   context.translate(-context.canvas.width/2, -context.canvas.height/2);
   context.beginPath();
   context.lineWidth = 5 + Math.random() * 10;
   context.moveTo(lastX, lastY);
   lastX = context.canvas.width * Math.random();
   lastY = context.canvas.height * Math.random();
   context.bezierCurveTo(context.canvas.width * Math.random(),
                         context.canvas.height * Math.random(),
                         context.canvas.width * Math.random(),
                         context.canvas.height * Math.random(),
                         lastX, lastY);

   hue = hue + 10 * Math.random();
   context.strokeStyle = 'hsl(' + hue + ', 50%, 50%)';
   context.shadowColor = 'white';
   context.shadowBlur = 10;
   context.stroke();
   context.restore();
 }
 setInterval(line, 50);

 function blank() {
   context.fillStyle = 'rgba(0,0,0,0.1)';
   context.fillRect(0, 0, context.canvas.width, context.canvas.height);
 }
 setInterval(blank, 40);

</script>

Captura de pantalla:

Ejemplo de lineas brillantes en canvas

Y el ejemplo vivo (ver segundo ejemplo independientemente):

Your browser doesn't support <canvas> element. Please, downdload and use one of the following browsers:

  • Google Chrome
  • Mozilla Firefox
  • Opera