canvas - 如何使用 Fabric.js 用 Canvas 中的新图像替换现有图像

标签 canvas fabricjs

我需要用从计算机上传的文件中的新图像替换现有图像,我想用新上传的图像替换图像。 Here is the code (JSFiddle) .

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

function addImage () {
    fabric.Image.fromURL('http://lorempixel.com/400/200', function (img) {
     img.set({ 'left': 50 });
      img.set({ 'top': 50 });
      img.scaleToWidth(100);
      img.scaleToHeight(100);
      canvas.add (img);
    });
}

addImage();
canvas {
    border:1px solid #000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.2/fabric.min.js"></script>
<canvas id="c" width="400" height="200"></canvas>
<span><input type="file" name="" id="span"></span>

最佳答案

您可以通过以下方式完成此操作...

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

function addImage(imgLink) {
    fabric.Image.fromURL(imgLink, function(img) {
        img.set({ 'left': 50 });
        img.set({ 'top': 50 });
        img.scaleToWidth(100);
        img.scaleToHeight(100);
				
        var objs = canvas.getObjects();
        if (objs.length) {
            objs.forEach(function(e) {
                if (e && e.type === 'image') {
                    e._element.src = imgLink;
                    canvas.renderAll();
                }
            });
        } else canvas.add(img);
    });
}

addImage('http://lorempixel.com/400/200');

// file upload
var span = document.querySelector('#span');
span.onchange = function(e) {
    var file = e.target.files[0];
    var reader = new FileReader();
    reader.onload = function(file) {
        addImage(file.target.result);
    }
    reader.readAsDataURL(file);
}
canvas {
  border:1px solid lightgrey;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.2/fabric.min.js"></script>
<canvas id="c" width="400" height="200"></canvas>
<span><input type="file" name="" id="span"></span>

关于canvas - 如何使用 Fabric.js 用 Canvas 中的新图像替换现有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43540285/

相关文章:

c# - Canvas.Left 与 Canvas.Right

javascript - 我的 HTML5 Web 应用程序崩溃了,我不知道如何调试

html - 使用 Fabric.js 的交互式文本字段

html - 切割形状图像以显示底层图像

javascript - 如何将html5 Canvas 保存到服务器

javascript - 来自纯 javascript 的 Paper.js

fabricjs - 仅显示一些控件

javascript - 如何修复 FabricJS 中 Inkscape SVG 的缩放和旋转?

fabricjs - Fabricjs中组中所有对象的setCoords

javascript - FabricJS 裁剪和 SVG 导出