有没有办法使用fabric.js 导入图像文件?

spa*_*alm 2 javascript import canvas image fabricjs

我目前正在使用 fabric.js 库和输入文件按钮将 png 或 svg 文件导入画布。下面的代码仅在图像位于根文件夹中时才有效。我知道我无权访问文件路径,所以我尝试从文件中创建一个元素。控制台中没有错误,但画布中没有任何显示。有没有办法让导入工作,或者是否有不同的库可以帮助我做到这一点?我正在使用 fabric.js 以便能够在画布内缩放和移动图像。

function upload(){
    var canvas = new fabric.Canvas('canvas');
    var file = document.getElementById('file').files[0].name;
    fabric.Image.fromURL(file, function(img) {
        canvas.add(img);
    })
}
Run Code Online (Sandbox Code Playgroud)

ɢʀᴜ*_*ᴜɴᴛ 5

是的!

有一种使用 FabricJS 导入图像/svg 文件的方法,如下所示...

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

function upload(e) {
   var fileType = e.target.files[0].type;
   var url = URL.createObjectURL(e.target.files[0]);

   if (fileType === 'image/png') { //check if png
      fabric.Image.fromURL(url, function(img) {
         img.set({
            width: 180,
            height: 180
         });
         canvas.add(img);
      });
   } else if (fileType === 'image/svg+xml') { //check if svg
      fabric.loadSVGFromURL(url, function(objects, options) {
         var svg = fabric.util.groupSVGElements(objects, options);
         svg.scaleToWidth(180);
         svg.scaleToHeight(180);
         canvas.add(svg);
      });
   }
}
Run Code Online (Sandbox Code Playgroud)
canvas {
   margin-top: 5px;
   border: 1px solid #ccc
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.13/fabric.min.js"></script>
<input type="file" onchange="upload(event)">
<canvas id="c" width="180" height="180"></canvas>
Run Code Online (Sandbox Code Playgroud)