【问题标题】:How can I remove image from Fabric.js canvas using button如何使用按钮从 Fabric.js 画布中删除图像
【发布时间】:2015-01-05 02:17:13
【问题描述】:

我对 canvas 和 Fabric.js 非常陌生。我遵循一些教程,现在可以将图像添加到画布。但不知道如何删除它。通过单击按钮

HTML

<div id="container">
   <input type="file" id="imageLoader" name="imageLoader" />
   <input type="button" id="imageRemove" name="imageRemove" />
   <canvas id="canvas" width="400" height="400" style="width:400px;height:400px" ></canvas>

JS

var canvas = new fabric.Canvas('canvas', {
    backgroundColor: 'rgb(240,240,240)'
});

var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);

function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function (event) {
    var img = new Image();
    img.onload = function () {
        var imgInstance = new fabric.Image(img, {
            scaleX: 1,
            scaleY: 1
        })
        canvas.add(imgInstance);
    }
    img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}

var imageRemove = document.getElementById('imageRemove');
imageLoader.addEventListener('change', handleRemove, false);

function handleRemove(e) {
   canvas.remove(canvas.getActiveObject());
}

编辑:

这里是Jsfiddle

【问题讨论】:

  • 你能快点提琴吗?
  • 完成!上面拨弄。 @艾米
  • 删除按钮上的点击事件不起作用
  • 您在更改时为 imageLoader 提供了 2 个不同的功能。第二个功能应该是点击图像删除
  • @Expl0de 请参考我发布的答案

标签: javascript html canvas fabricjs


【解决方案1】:

您可以使用clear() 清除画布对象并使用renderAll() 重新绘制给定的画布。

试试这个代码:

DEMO

HTML:

    <div id="container">
    <input type="file" id="imageLoader" name="imageLoader" />
    Remove:<input type="button" value="remove" id="imageRemove" name="imageRemove" onClick="handleRemove()"/>
    <canvas id="canvas" width="400" height="400" style="width:400px;height:400px" ></canvas>

JS代码:

var canvas = new fabric.Canvas('canvas', {
    backgroundColor: 'rgb(240,240,240)'
});

var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);

function handleImage(e) {
  var reader = new FileReader();
  reader.onload = function (event) {
    var img = new Image();
    img.onload = function () {
        var imgInstance = new fabric.Image(img, {
            scaleX: 1,
            scaleY: 1
        })
        canvas.add(imgInstance);
    }
    img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}

//var imageRemove = document.getElementById('imageRemove');
//imageLoader.addEventListener('change', handleRemove, true);

function handleRemove() {
canvas.clear().renderAll(); // Here is your clear canvas function
}

【讨论】:

  • 这将清除整个画布而不仅仅是图像,对吧?如果有图像和文本,但我们只想删除文本而不是图像怎么办?也不是通过选择文本而是通过复选框操作来清除文本。如果单击复选框,则显示文本,否则删除文本。
猜你喜欢
  • 2012-02-15
  • 2020-10-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
相关资源
最近更新 更多