javascript - 由于javascript冲突,无法上传图片

标签 javascript jquery html css canvas

我们提供了使用以下代码上传图像的选项:https://jsfiddle.net/bwdzha94/ ,运行良好。

后来我们决定显示一些 Canvas 图像,所以我们使用:https://jsfiddle.net/pmeb1uhm/1/

现在我将两个代码合并如下:jsfiddle.net/r22oka49/[或下面的代码片段],我现在无法上传图像。

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
  canvas = document.getElementById('case_canvas');
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
}

img.src = "/image/xgNw7.png";
//^^ this will start loading the image
/*.canvas-container {
  background: url("/image/xgNw7.png") no-repeat fixed center;
  }
  */
 
 
 #canvas
 {
  border: 1px solid black;
}
<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" style="width: 300px; height: 500px; position: relative; -webkit-user-select: none;">
<canvas id="case_canvas" width="300" height="500" class="lower-canvas" style="position: absolute; width: 300px; height: 500px; left: 0px; top: 0px; -webkit-user-select: none;"></canvas>
<canvas class="upper-canvas " width="300" height="500" style="position: absolute; width: 300px; height: 500px; left: 0px; top: 0px; -webkit-user-select: none; cursor: default;"></canvas>
</div>

最佳答案

您在 img.onload() 中缺少 var,它会覆盖布料 Canvas 。

img.onload = function() {
  //draw after loading
  var canvas = document.getElementById('case_canvas');
  //^^ create local variable instead of using the global one
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
}

Updated JSfiddle

关于javascript - 由于javascript冲突,无法上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38692583/

相关文章:

javascript - 使用 jQuery 在嵌套列表中查找包含特定文本的列表项

javascript - 无法使用 jQuery/Javascript 从表单中检索值

javascript - RegEx 只允许英文文本,不允许特殊字符

javascript - 比较两个对象javascript数组并删除不相等的值

JavaScript 正则表达式不匹配

javascript - 用这个构建的 jQuery 选择器

javascript - Google 图表不绘制/显示

javascript - 使用复选框 jquery 选择/取消选择文本字段

javascript - 将删除按钮与警报框合并

javascript - 通过其子元素的数量改变父宽度?