Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用fabricjs从HTML5画布中的本地硬盘上传图像文件 fabric.Image.fromURL('Image.jpg',函数(img){在这里输入代码 var oImg=img.set({左:50,上:100,角:00})。刻度(0.9); canvas.add(oImg.renderAll(); canvas.setActiveObject(oImg); });_Javascript_Html_Html5 Canvas_Fabricjs - Fatal编程技术网

Javascript 如何使用fabricjs从HTML5画布中的本地硬盘上传图像文件 fabric.Image.fromURL('Image.jpg',函数(img){在这里输入代码 var oImg=img.set({左:50,上:100,角:00})。刻度(0.9); canvas.add(oImg.renderAll(); canvas.setActiveObject(oImg); });

Javascript 如何使用fabricjs从HTML5画布中的本地硬盘上传图像文件 fabric.Image.fromURL('Image.jpg',函数(img){在这里输入代码 var oImg=img.set({左:50,上:100,角:00})。刻度(0.9); canvas.add(oImg.renderAll(); canvas.setActiveObject(oImg); });,javascript,html,html5-canvas,fabricjs,Javascript,Html,Html5 Canvas,Fabricjs,我正试图通过输入标签从硬盘上传图像文件。这是我的示例代码。告诉我如何更改此脚本,以便从输入中选择图片。为什么不在输入字段上使用更改处理程序 如果您添加一个id <html> <input type="file" name="Image"> </html> <script> fabric.Image.fromURL('image.jpg', function(img) {enter code here var oImg = img.set({ l

我正试图通过输入标签从硬盘上传图像文件。这是我的示例代码。告诉我如何更改此脚本,以便从输入中选择图片。

为什么不在输入字段上使用更改处理程序

如果您添加一个id

 <html>
<input type="file" name="Image">
</html>

<script>
fabric.Image.fromURL('image.jpg', function(img) {enter code here
var oImg = img.set({ left: 50, top: 100, angle: 00 }).scale(0.9);
canvas.add(oImg).renderAll();
canvas.setActiveObject(oImg);
});
</script>

您可以使用HTML5文件阅读器查看图像,而无需上传图像并将其添加到画布。
var canvas=newfabric.canvas('canvas');
document.getElementById('file').addEventListener(“更改”,函数(e){
var file=e.target.files[0];
var reader=new FileReader();
reader.onload=函数(f){
var数据=f.target.result;
fabric.Image.fromURL(数据、函数(img)){
var oImg=img.set({左:50,上:100,角:00})。刻度(0.9);
canvas.add(oImg.renderAll();
canvas.setActiveObject(oImg);
});
};
reader.readAsDataURL(文件);
});

这里有一个工作示例:

HTML

您只需使用FileReader将图像文件读入base64格式,并将
fabric.image
添加到画布


但是,文件大小有限制。它因浏览器而异:

角度解决方案:

打字稿:

var readFile = function(e) {
  var input = e.target;

  var reader = new FileReader();

  reader.onload = function(){
    var img = document.createElement('img');
    img.src = reader.result;

    var image = new fabric.Image(img);
    canvas.add(image);
  };

  reader.readAsDataURL(input.files[0]);
};

document.getElementById('file').addEventListener('change', readFile);

var canvas = new fabric.Canvas(document.getElementById('canvas'), {
  backgroundColor: '#c8c8c8'
});
HTML:

选择文件

如何在fabric js中使用change handler?我会查看FabricJS文档。您的问题是-afaik-识别用户选择文件的时间。未捕获类型错误:无法读取null的属性'addEventListener',我在此行文档中遇到此错误。getElementById('image')。addEventListener(“更改”,函数(e){@SalmanUllah如果您在OP中以您的示例为例,它是
Image
而不是
Image
。我尝试了不同的id,但仍然得到相同的错误。您是否为输入设置了id?是的,我在输入中设置了id=“file”,并为文档设置了相同的id。getElementById(“文件”)未捕获的TypeError:无法读取null的属性'addEventListener',我仍然收到此错误运行此示例时是否收到此错误?因为这几乎不可能发生。我假设您尝试通过复制上面的代码来实现此操作,但缺少了一些内容。您必须具有id为“file”的输入字段不,我确实将我的输入id更改为id=“file”。因此,您可能在其他位置有错误。请将代码放在这里。哦,对不起,我没有检查我的输入id。非常感谢。它现在正在上载我的图片。但当我单击它时,它消失了。
//assuming jquery
$("#Image").on("change", function(e) {
   //run your code here
});
<!DOCTYPE html>
<html>
<head>
  <script src="//cdnjs.cloudflare.com/ajax/libs/fabric.js/1.4.13/fabric.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <input id="file" type="file" accept="image/*">
  <canvas id="canvas" width="600" height="600"></canvas>
</body>
</html>
var readFile = function(e) {
  var input = e.target;

  var reader = new FileReader();

  reader.onload = function(){
    var img = document.createElement('img');
    img.src = reader.result;

    var image = new fabric.Image(img);
    canvas.add(image);
  };

  reader.readAsDataURL(input.files[0]);
};

document.getElementById('file').addEventListener('change', readFile);

var canvas = new fabric.Canvas(document.getElementById('canvas'), {
  backgroundColor: '#c8c8c8'
});
uploadImage(event) {
    if (event.target.files.length > 0) {
        const file = event.target.files[0];
        const reader = new FileReader();

        reader.onload = (e: any) => {
            const data = e.target.result;
            fabric.Image.fromURL(data, img => {
                this.canvas.add(img);
                this.canvas.centerObject(img);
            });
        };

        reader.readAsDataURL(file);
    }
}
<button type="button" mat-raised-button (click)="fileInput.click()">Choose File</button>
<input hidden (change)="uploadImage($event)" #fileInput type="file" id="file">