【问题标题】:Draw specific area to canvas在画布上绘制特定区域
【发布时间】:2015-04-11 01:02:40
【问题描述】:

我正在使用 html2canvas。是否可以通过指定x,y坐标来截取DIV的指定区域?

Example Fiddle

所以基本上我正在寻找一种方法来捕获 x=10 到 x=140 然后 y=20 到 y=220 区域。

var aaaDiv=document.getElementById('aaa');
var ttDiv=document.getElementById('tt');

html2canvas(aaaDiv).then(function(canvas) {
    canvas.id='avatarCanvas';
    ttDiv.appendChild(canvas);
});

【问题讨论】:

    标签: javascript jquery html canvas html2canvas


    【解决方案1】:

    html2canvas 没有 API 选项来剪辑其源 div 的一部分,但您可以使用 context.drawImage 的剪辑版本相当轻松地做到这一点:

    <!doctype html>
    <html>
    <head>
    <script src="https://rawgit.com/niklasvh/html2canvas/master/dist/html2canvas.min.js"></script>
    <style>
        body{ background-color: ivory; }
        canvas{border:1px solid red;}
        #avatarCanvas{border:1px solid green;}
    
    </style>
    <script>
    window.onload=(function(){
    
        var aaaDiv=document.getElementById('aaa');
        var ttDiv=document.getElementById('tt');
    
        html2canvas(aaaDiv).then(function(canvas){
            // define the area you want to crop
            var x=10;
            var y=20;
            // calc the size -- but no larger than the html2canvas size!
            var width=Math.min(canvas.width,140-10);
            var height=Math.min(canvas.height,220-20);
            // create a new avatarCanvas with the specified size
            var avatarCanvas=document.createElement('canvas');
            avatarCanvas.width=width;
            avatarCanvas.height=height;
            avatarCanvas.id='avatarCanvas';
            // put avatarCanvas into ttDiv
            ttDiv.appendChild(avatarCanvas);
            // use the clipping version of drawImage to draw
            // a clipped portion ofhtml2canvas's canvas onto avatarCanvas
            var avatarCtx=avatarCanvas.getContext('2d');
            avatarCtx.drawImage(canvas,x,y,width,height,0,0,width,height);
        });
    
    }); // end $(function(){});
    </script>
    </head>
    <body>
        <h4>This is 'aaa'</h4>
        <div id="aaa">
            aaaaa
            <br>
            bbbbb
        </div> 
        <h4>This is 'tt'</h4>   
        <div id='tt'></div>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多