【问题标题】:Fabric.js Images blurryFabric.js 图像模糊
【发布时间】:2018-06-10 10:31:41
【问题描述】:

我正在使用 Fabric.js 和 jQuery UI 作为拖放场景创建器。当我将图像拖放到画布中时,图像变得模糊/像素化并且似乎被放大了。我一直在搜索 Stackoverflow 和 Google,但找不到任何解决方案。对于如何修复它的任何建议,我将不胜感激!

这是我的代码:

// HTML

<canvas id="scene"></canvas>

// Draggable setup

$('.scene-item').draggable({
    helper: 'clone',
    appendTo: 'body',
    containment: 'window',
    scroll: false,
    zIndex: 9999
});

// Drop Setup

var canvas = new fabric.Canvas('scene');

canvas.setDimensions({
    width: '800px',
    height: '500px'
}, {
    cssOnly: true
});
document.getElementById("scene").fabric = canvas;

canvas.on({
    'object:moving': function(e) {
        e.target.opacity = 0.5;
    },
    "object:modified": function(e) {
        e.target.opacity = 1;
    }
});


$('#scene').droppable({
    drop: function(e, ui) {
        if ($(e.target).attr('id') === 'scene') {
            var pointer = canvas.getPointer();
            fabric.Image.fromURL(ui.draggable[0].currentSrc, function (img) {
                console.log(img);
                img.set({
                    left: pointer.x - 20,
                    top: pointer.y - 20,
                    width: 52,
                    height: 52,
                    scale: 0.1
                });
                //canvas.clear();
                canvas.add(img);
                canvas.renderAll();
            });
        }
    }

});

这是图像在画布上和画布外的样子:

这是一个演示jsfiddle.net/dmLr6cgx/1

【问题讨论】:

标签: javascript jquery canvas jquery-ui-draggable fabricjs


【解决方案1】:

我发现了问题所在。我不得不更换:

canvas.setDimensions({
        width: '800px',
        height: '500px'
    }, {
        cssOnly: true
    });

canvas.setHeight(500);
canvas.setWidth(800);
canvas.renderAll();

现在它可以正常工作了。

【讨论】:

  • 哇,这是一个合法的解决方案。我通过构造函数给出高度和宽度,但这节省了我的一天。在最新版本中,它是 requestRenderAll 顺便说一句。
  • 哟,你们都可以检查一下并告诉我为什么会这样吗? stackoverflow.com/questions/62457067/…
猜你喜欢
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 2015-06-10
  • 2014-06-13
  • 2015-09-19
  • 2019-02-02
  • 2019-05-13
  • 1970-01-01
相关资源
最近更新 更多