zoukankan      html  css  js  c++  java
  • html5中的Canvas对图片的一些修改

    先展示一下效果:

    左边是处理前的原图,右边是经过canvas处理之后的效果。

    html代码如下:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <canvas id="canvas" width="800" height="800"></canvas>
     9     </body>
    10 </html>

    javascript代码如下:

     1 <script type = "text/javascript">
     2       var canvas = document.getElementById('canvas');
     3       var context = canvas.getContext('2d');
     4       var image = new Image();
     5       image.src = "img/7.jpg";
     6       image.onload = function(){
     7           context.drawImage(image,0,0,300,500);
     8           var imageData = context.getImageData(0,0,300,500);
     9            //获取到每个像素的信息
    10           var px = imageData.data;
    11           for(var i = 0; i < px.length; i+=4){
    12               var r = px[i];
    13               var g = px[i + 1];
    14               var b = px[i + 2];
    15               var gray = ((r + g + b)/3);
    16               px[i] = gray;
    17               px[i + 1] = gray;
    18               px[i + 2] = gray; 
    19          }
    20          context.putImageData(imageData,300,0);
    21       }
    22 </script>

    canvas实现对画面的修改说的简单一些就是将一个一个像素点从新赋值画上去,最后展示在面前的就是一幅经过修改的画面。同理我们如果对视频进行这样的修改呢,我们知道视频就是一张一张图片组成的,如果我们将每一张图片都做这样的修改是不是也能的到这样的效果。下面的代码是对视频的修改。

    html代码:

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="UTF-8">
     5         <title></title>
     6     </head>
     7     <body>
     8         <canvas id="canvas" width="800" height="800"></canvas>
     9         <video src="ganggang.mp4" id="video"></video>
    10     </body>
    11 </html>

    javascript代码:

     1 <script type="text/javascript">
     2         var canvas = document.getElementById('canvas');
     3         var context = canvas.getContext('2d');
     4         var video = document.getElementById('video');
     5         function animate(){
     6             if(!video.end){
     7                 context.drawImage(video,0,0,200,300);
     8                 var imageData = context.getImageData(0,0,200,300);
     9                 var px = imageData.data;
    10                 for(var i = 0; i < px.length; i+=4){
    11                     var r = px[i];
    12                     var g = px[i+1];
    13                     var b = px[i+2];
    14                     var gray = ((r+g+b)/3);
    15                     px[i] = gray;
    16                     px[i+1] = gray;
    17                     px[i+2] = gray;
    18                 }
    19                 context.putImageData(imageData,200,0);
    20                 window.requestAnimationFrame(animate);
    21             }
    22         }
    23         video.oncanplay = function(){
    24             video.play();
    25             window.requestAnimationFrame(animate);
    26         }
    27     </script>

    最后的效果这里就不展示了。

  • 相关阅读:
    weblogic启动失败java.lang.NullPointerException
    weblogic应用加载不上
    easychm生成帮助文件时出现的目录导航乱码问题
    An error report file with more information is saved as hs_err_pid2756.log
    js parseint
    修改myelipse中部署路径deploy location内容的方法
    FusionCharts制作实时刷新图
    关于Jquery,js脚本加载执行先后顺序的一些事
    jeesite+mysql,数据导入出现问题。
    AMD Radeon HD 7650A显卡问题
  • 原文地址:https://www.cnblogs.com/hgs-159/p/6030468.html
Copyright © 2011-2022 走看看