zoukankan      html  css  js  c++  java
  • 用canvas做图片对比

    以前和别人联机玩连连看的时候,总是一群人围在一起看;不过就算是一群人看一个人也总有看不到的时候。

    那时候就想要是有 个外挂就好了。

    HTML5的Canvas是可以处理像素级的信息的。那可否用Canvas来比较呢。自己PS两个图来测试一把。

    A.PNG

    B.PNG

    写完代码,LOAD到页面中。DIFF出来信息。

     1 <style>
     2     .canvas{ width:500px; height:300px; background-color: #DDD;margin: 20px auto;}
     3 </style>
     4 <body>
     5 <div class="canvas">
     6 <canvas id="canvas" width ="500" height="300" > </canvas>
     7 </div>
     8 
     9 <script type="text/javascript">
    10 
    11     var canvas = document.getElementById('canvas'),
    12     ctx = canvas && canvas.getContext && canvas.getContext('2d'),
    13     imageData, pixelArray;
    14     var imgA,imgB,callBack;
    15 
    16     imgA = new Image();
    17     imgA.onload = function() {
    18         ctx.drawImage(this, 50,100);
    19         imgA = ctx.getImageData(50, 100, this.width, this.height);
    20         imgB = new Image();
    21         imgB.onload = function() {
    22             ctx.drawImage(this, 200,100);
    23             imgA = ctx.getImageData(200, 100, this.width, this.height);
    24             callBack();
    25         };
    26         imgB.src = 'B.png';
    27     };
    28     imgA.src = 'A.png';
    29     callBack  = function(){
    30 
    31         imageData = ctx.getImageData(50, 100, 100,100);
    32            pixelArray = imageData.data;
    33 
    34            compImage =  ctx.getImageData(200, 100, 100,100);
    35            compData  =   compImage.data;;
    36 
    37         for (var i=0, len=pixelArray.length; i<len; i+=4) {
    38             var r = pixelArray[i], 
    39                 g = pixelArray[i+1], 
    40                 b = pixelArray[i+2], 
    41                 a = pixelArray[i+3];
    42 
    43             var r1 = compData[i], 
    44                 g1 = compData[i+1], 
    45                 b1 = compData[i+2], 
    46                 a1 = compData[i+3];
    47 
    48             var a = [r,g,b,a].join('-');
    49             var b = [r1,g1,b1,a1].join('-');
    50             if( a !== b  ){
    51                 pixelArray[i] = 255 - r;
    52                 pixelArray[i+1] = 255 - g;
    53                 pixelArray[i+2] = 255 - b;
    54             }else{
    55                 pixelArray[i]   = 0;
    56                 pixelArray[i+1] = 0;
    57                 pixelArray[i+2] = 0;
    58             }
    59 
    60              
    61         }
    62          ctx.putImageData(imageData, 350, 100);
    63     }
    64 </script>
    65 
    66 </body>
  • 相关阅读:
    体育场馆预订系统版本1.0
    需求分析
    系统界面主地图
    详细设计
    概要设计
    测试用例正式发布
    第二次全体会议顺利召开5.30
    第一次小组会议(5.24)
    SDk编程基础
    单词canutillos祖母绿canutillos英语
  • 原文地址:https://www.cnblogs.com/webooxx/p/2519738.html
Copyright © 2011-2022 走看看