Javascript 获取背景图像对象

Javascript 获取背景图像对象,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,我目前正在尝试获取canvas实例的backgroundImage对象,但它不起作用。我得到了画布对象的所有属性,但没有得到当前加载的背景图像。还有人知道这个问题吗?这是我的 var bgImg = canvas.setBackgroundImage(img.src, canvas.renderAll.bind(canvas), { width: bgWidth, height: bgHeight, originX: 'left', originY: 'top', left:

我目前正在尝试获取canvas实例的backgroundImage对象,但它不起作用。我得到了画布对象的所有属性,但没有得到当前加载的背景图像。还有人知道这个问题吗?这是我的

var bgImg = canvas.setBackgroundImage(img.src, canvas.renderAll.bind(canvas), {
  width: bgWidth,
  height: bgHeight,
  originX: 'left',
  originY: 'top',
  left: 0,
  top: bgTop
});
如果我接着执行类似于:console.log(bgImg.backgroundImage)的操作,结果将为null。对于canvas元素的所有其他属性,如果需要宽度,我会得到object return或value,因此所有其他属性都可以工作。背景图像不起作用的原因是什么

非常感谢您的帮助

非常感谢,,
michael

这是因为当您尝试使用console.log()显示时,setBackgroundImage未完成(异步)

html:


在本例中,当您单击按钮时,canvas.backgroundImage将显示在控制台中:

我们可以对您的代码进行修改吗?应该更容易帮助你。这是小提琴。console.log结果为“null”是的,我知道,但我无法获取实际设置背景的属性。这正是我需要的。我知道其他方法和变量也在起作用。但请尝试获取bgImg中设置的backgroundImage属性的对象。背景图像确实存在,但我无法获取对象例如过滤背景嘿,你是否尝试获取背景图像的对象?这是非常关键的,我不明白为什么它不起作用。如果我想要画布实例的另一个对象-f.e.freeDrawingBrush,它可以工作。那么为什么不在背景图片上呢?这对我来说非常重要,因为我想在背景图像上使用滤镜。非常感谢,非常感谢。好吧,这很有道理。你救了我一天!你能验证这个答案吗?!在我答案的左上角。
<canvas width="320" height="510" id="canvas"></canvas>
<button id="click">Click here !</button>
var canvas = new fabric.Canvas('canvas');

var img = new Image()
img.src = 'http://fabricjs.com/assets/jail_cell_bars.png';

var bgImg = canvas.setBackgroundImage(img.src, canvas.renderAll.bind(canvas), {
    width: 320,
    height: 510,
    originX: 'left',
    originY: 'top',
    left: 0,
    top: 0
});

document.getElementById("click").addEventListener("click", function () {
    console.log(bgImg.backgroundImage);
});