简体   繁体   English

如何将图像添加到织物画布?

[英]How to add image to fabric canvas?

I want to add images/icons to my fabric canvas.我想在我的织物画布上添加图像/图标。 The code given on the Fabric demo is not working. Fabric 演示中给出的代码不起作用。

fabric.Image.fromURL('my_image.png', function(oImg) {
canvas.add(oImg);
});

This just makes my entire canvas blank.这只会让我的整个画布空白。 I want to add icons as clickable elements which respond to events.我想添加图标作为响应事件的可点击元素。

I have done a jsfiddle that loads a jpg image on the canvas, by using the fabric.Image.fromURL() function and the ' mouse:down ' event.我已经完成了一个 jsfiddle,通过使用fabric.Image.fromURL()函数和“ mouse:down ”事件在画布上加载了一个 jpg 图像。 Inside the mouse:down i check if the user clicks on an object or just on the canvas.鼠标内部:向下我检查用户是否点击了一个对象或只是在画布上。

here is a snippet of the javascript:这是javascript的一个片段:

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

fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg', function(myImg) {
 //i create an extra var for to change some image properties
 var img1 = myImg.set({ left: 0, top: 0 ,width:150,height:150});
 canvas.add(img1); 
});

canvas.on('mouse:down',function(event){
  if(canvas.getActiveObject()){
    alert(event.target);
  }

})

but my example also works ok ,if i dont use the extra variable:但我的例子也可以正常工作,如果我不使用额外的变量:

fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg', function(myImg) {
 canvas.add(myImg); 
});

if you need more fabric events you can take a look here : http://fabricjs.com/events/如果您需要更多结构事件,您可以在这里查看: http : //fabricjs.com/events/

jsfiddle : https://jsfiddle.net/tornado1979/5nrmwtxu/ jsfiddle: https ://jsfiddle.net/tornado1979/5nrmwtxu/

Hope helps , good luck.希望有帮助,祝你好运。

This code is working properly but you need to use fabric.js file.此代码工作正常,但您需要使用 fabric.js 文件。 You also need to use fabric.js CDN file in your header.您还需要在标头中使用 fabric.js CDN 文件。

Fabric.js CDN-> Fabric.js CDN->

 var canvas = new fabric.Canvas('drawarea'); var imgElement = document.getElementById('my-image'); var imgInstance = new fabric.Image(imgElement, { left: 100, top: 100, angle: 0, opacity: 0.75, width:300, height:300 }); canvas.add(imgInstance);
 #my-image{display:none;}
 <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.22/fabric.min.js"></script> <canvas width="800" height="800" id="drawarea" style="border: 1px solid red;float: right"> </canvas> <img src="https://via.placeholder.com/300.png" id="my-image" width="500px" height="500px">

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM