Javascript 在Fabric.js中PNG图像颜色不变

Javascript 在Fabric.js中PNG图像颜色不变,javascript,jquery,html5-canvas,fabricjs,Javascript,Jquery,Html5 Canvas,Fabricjs,我正在使用下面的代码动态更改画布上PNG图像的颜色 var selectedObject = canvas.getActiveObject(); if ("text" == selectedObject.type) { selectedObject.setFill("#FF0000"); canvas.renderAll(); } else { selectedObject.filters.push( new fabric.Image.filters.Tint(

我正在使用下面的代码动态更改画布上PNG图像的颜色

var selectedObject = canvas.getActiveObject();

if ("text" == selectedObject.type) {
   selectedObject.setFill("#FF0000");
   canvas.renderAll();
}
else {    
  selectedObject.filters.push(
    new fabric.Image.filters.Tint({color:"#FF0000", opacity:0.6}));

  selectedObject.applyFilters(canvas.renderAll.bind(canvas));
}
其中canvas=newfabric.canvas'c'

*静态颜色用于测试目的,将由颜色选择器代替


对于文本,它工作正常,但对于图像,它不工作

无法对交叉源图像应用图像过滤器。如果查看开发人员控制台,您会看到以下安全错误:未捕获安全错误:未能在“CanvasRenderingContext2D”上执行“getImageData”:画布已被跨源数据污染

请仅使用来自同一来源的图像,或使用最新的Fabric.js版本dev version并设置crossOrigin=Anonymous。在这种情况下,图像必须与标题访问控制一起提供

使用fabric.Image.filters.Tint的新API-此API仅在fabric.js版本>=1.3.2中可用

我已将JSFIDLE更新为使用数据URL图像CORS没有问题,并将Fabric.js更新为1.3.2:


您可以自行查找最新的开发版本:在

@Tushar Gupta,请检查这里是jsfiddle,当我们选择文本颜色更改时,但当我们选择图像无效果时,我想更改png图像的颜色以及新西兰,我现在无法升级到更新版本的fabric.js,我们使用的是1.2.0。有没有办法让crossOrigin的东西在那个版本中工作?我尝试添加img.crossOrigin='anonymous';在loadImage函数中,未成功。根据1.4.7代码,您似乎需要使用setCrossOrigin[],但我无法使其在Chrome中工作。@Jack您必须将crossOrigin属性传递到loadImage函数中。必须在图像加载过程开始之前设置crossOrigin属性。fabric.util.loadImage'xyz.png',functionimg{…},null,'anonymous'}@Kienz我们前一阵子就开始工作了,我们最终升级了布料。@Jack,你能帮我一下吗。画布图像正在从跨原点加载,但我仍然无法应用过滤器