我们在网站上显示image1如下:
现在我们提供上传image2的选项,我们想要上传的图像2应该与现有的image1重叠,例如here。
但现在当我们上传image2时,image1在image2上重叠。
var canvas = new fabric.Canvas('canvas');
document.getElementById('file').addEventListener("change", function (e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = function (f) {
var data = f.target.result;
fabric.Image.fromURL(data, function (img) {
// var oImg = img.set({left: 0, top: 0, angle: 00,width:100, height:100}).scale(0.9);
var oImg = img.set({left: 0, top: 0, angle: 00, width: canvas.getWidth(), height: canvas.getHeight()});
canvas.add(oImg).renderAll();
var a = canvas.setActiveObject(oImg);
var dataURL = canvas.toDataURL({format: 'png', quality: 0.8});
});
};
reader.readAsDataURL(file);
});
var img = new Image();
img.onload = function() {
//draw after loading
var canvas = document.getElementById('case_canvas');
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
}
img.src = "http://i.stack.imgur.com/xgNw7.png";
//^^ this will start loading the image
/*.canvas-container {
background: url("http://i.stack.imgur.com/xgNw7.png") no-repeat fixed center;
}
*/
.canvas-container {
width: 300px; height: 500px; position: relative; -webkit-user-select: none; top:900px;
}
#canvas
{
border: 1px solid black;
top:500px;
}
#file
{
position:relative;top:900px;
}
.lower-canvas
{
position: absolute; width: 300px; height: 500px; bottom:400px; left: 0px; -webkit-user-select: none;
}
.upper-canvas {
position: absolute; width: 300px; height: 500px; left: 0px; top: 0px; -webkit-user-select: none; cursor: default;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script>
<input type="file" id="file"><br />
<canvas id="canvas" width="450" height="450"></canvas>
<div class="canvas-container">
<canvas id="case_canvas" width="300" height="500" class="lower-canvas" ></canvas>
<canvas class="upper-canvas " width="300" height="500" ></canvas>
</div>
点击Run code Snippet
后,请向下滚动一下以查看结果。
答案 0 :(得分:0)
添加
#case_canvas {
z-index:-1
}
给你的CSS。这将在任何上传的图片后面放置带有案例轮廓的画布。但请确保上传的图片大小正确。例如,通过.scale(x)
或通过将宽度设置为画布宽度的某个比例,因为它现在的方式,它将覆盖整个画布,如果它足够大,则根本不可见。 / p>
答案 1 :(得分:0)
FabricJs将自己的画布元素添加到DOM中,有2个: 一个上部画布基本上处理用于拖动/调整大小的事件和行,用于渲染图像或对象的下部画布。
不应添加另一个,而应仅使用fabricJS框架,将背景图像定义为fabric.Image。您可以自定义它,以便用户无法修改它。
添加z-index或重构你的html可能会解决你当前的问题,但请相信我:这不是你想要的方式。