Lasso tool in html5 canvas

后端 未结 1 854
夕颜
夕颜 2020-12-18 08:23

I\'m trying to build a freeform lasso tool to clip an image inside canvas. I\'m using fabric.js to draw the shape.

相关标签:
1条回答
  • 2020-12-18 09:12

    The image needs to be a fabric.Image.

    You could try something like this:

    var canvas = document.getElementById('c');
    var ctx = canvas.getContext('2d');
    var img = document.createElement('IMG');
    
    img.onload = function() {
        var OwnCanv = new fabric.Canvas('c', {
            isDrawingMode: true
        });
    
        var imgInstance = new fabric.Image(img, {
            left: 0,
            top: 0,
        });
        OwnCanv.add(imgInstance);
    
        OwnCanv.freeDrawingBrush.color = "purple"
        OwnCanv.freeDrawingBrush.width = 4
    
        OwnCanv.on('path:created', function(options) {
            var path = options.path;
            OwnCanv.isDrawingMode = false;
            OwnCanv.remove(imgInstance);
            OwnCanv.remove(path);
            OwnCanv.clipTo = function(ctx) {
                path.render(ctx);
            };
            OwnCanv.add(imgInstance);
        });
    }
    
    img.src = "http://upload.wikimedia.org/wikipedia/commons/3/33/Jbassette4.jpg?uselang=fi";
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.4.0/fabric.min.js"></script>
    
    <canvas id="c" width="500" height="500"></canvas>

    See these resources for more:

    http://fabricjs.com/fabric-intro-part-1/

    Multiple clipping areas on Fabric.js canvas

    Fabric.js Clip Canvas (or object group) To Polygon

    0 讨论(0)
提交回复
热议问题