我需要用计算机上传文件中的新图像替换现有图像,我想用新上传的图像替换图像. 这是代码(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();Run Code Online (Sandbox Code Playgroud)
canvas {
border:1px solid #000;
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
你可以通过以下方式实现这一目标......
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);
}Run Code Online (Sandbox Code Playgroud)
canvas {
border:1px solid lightgrey;
}Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)