【问题标题】:How to resize upper canvas based on its lower canvas in fabric.js.?如何根据fabric.js中的下部画布调整上部画布的大小?
【发布时间】:2016-12-10 14:16:12
【问题描述】:

我在织物画布上添加我的裁剪图像和徽标,裁剪图像和徽标是上下画布。现在的问题是如何将最大宽度设置为织物画布,以便我可以将徽标拖出画布。

我已经为现有画布、徽标和裁剪图像实现了最大宽度。这里的问题是我无法将徽标拖到整个画布上。

这里是代码

<div class="container"> 

<div style="position: relative;" id="editor">
    <canvas id="canvas" class="img-responsive"></canvas>
</div>

<div class="container">
<a class="btn btn-primary" id="save">Save</a>
<a class="btn btn-primary" id="download">Download</a>

<script>
$(function () {
    var source = sessionStorage.getItem("source");
    $("#background").attr("src", source);
});
setTimeout(function () {
    var myImg = document.querySelector("#background");
    var realWidth = myImg.naturalWidth;
    var realHeight = myImg.naturalHeight;
    $("canvas").attr("width", realWidth);
    $("canvas").attr("height", realHeight);
    var source = document.getElementById('background').src;
    var canvas = new fabric.Canvas('canvas');
    canvas.width=realWidth;
    canvas.height=realHeight;
    var ctx = canvas.getContext('2d');
    var img = new Image();
    img.src = 'images/logo.png';
    var imgInstance = new fabric.Image(img, {
        width: 200
        , height: 45
    });
    canvas.add(imgInstance);
    canvas.setBackgroundImage(source, canvas.renderAll.bind(canvas), {
        backgroundImageOpacity: 0.5
        , backgroundImageStretch: false
    });


}, 2000);
$("#save").click(function(){
    function blobCallback(iconName) {
        return function (b) {
            var a = document.getElementById('download');
            a.download = iconName + ".jpg";
            a.href = window.URL.createObjectURL(b);
        }
    }
    canvas.toBlob(blobCallback('wallpaper'), 'image/vnd.microsoft.jpg', '-moz-parse-options:format=bmp;bpp=32');
});

【问题讨论】:

    标签: javascript canvas html5-canvas fabricjs


    【解决方案1】:

    作为fabricjs画布,不要直接操作宽度和高度,而是使用正确的方法:

    setTimeout(function () {
        var myImg = document.querySelector("#background");
        var realWidth = myImg.naturalWidth;
        var realHeight = myImg.naturalHeight;
        var source = document.getElementById('background').src;
        var canvas = new fabric.Canvas('canvas');
        canvas.setDimensions({ width: realWidth, height: realHeight });
        var img = new Image();
        // use a load callback to add image to canvas.
        img.src = 'images/logo.png';
        var imgInstance = new fabric.Image(img, {
            width: 200
            , height: 45
        });
        canvas.add(imgInstance);
        canvas.setBackgroundImage(source, canvas.renderAll.bind(canvas), {
            backgroundImageOpacity: 0.5
            , backgroundImageStretch: false
        });
    
    
    }, 2000);
    

    【讨论】:

      猜你喜欢
      • 2016-09-22
      • 2015-08-31
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 2017-06-15
      • 1970-01-01
      相关资源
      最近更新 更多