【问题标题】:Fabric Js Image blend Filter and change Image src issuesFabric Js Image blend过滤和更改Image src问题
【发布时间】:2021-04-15 21:01:50
【问题描述】:

当我尝试在 FabricJS 中更改图像 src 时工作正常,但在向该图像更改 src 添加过滤器(混合图像)后无法正常工作:

更改图片源代码:

function replaceImage(imgLink) {  
  fabric.Image.fromURL(imgLink, function(img) {
    var object = canvas.getActiveObject();
    object._element.src = imgLink;
    canvas.renderAll();
  });
}

添加过滤代码:

   filter2 = new fabric.Image.filters.BlendImage({
      image: mainObject,
      mode: 'mask',
      alpha: 0.5
   });

  let object = canvas.getActiveObject(); 
  object.filters.push(filter2);
  object.applyFilters();
  canvas.renderAll();

【问题讨论】:

    标签: fabricjs


    【解决方案1】:

    使用imageObj#setSrc 更改图像对象的来源。 BlendImage 模式可用的选项是 multiply, add, diff, screen, subtract, darken, lighten, overlay, exclusion, tint 其中之一。

    演示

    var canvas = new fabric.Canvas('editorCanvas', {
      backgroundColor: 'white',
      width: 300,
      height: 300
    });
    var imageObject;
    fabric.Image.fromURL('https://picsum.photos/200/200', function(img) {
      img.set({width:200,height:200,scaleX:1,scaleY:1})
      imageObject = img;
      canvas.add(img);
    },{crossOrigin:'annonymous'});
    var i=0;
    function addFilter(){
       filter2 = new fabric.Image.filters.BlendImage({
          image: imageObject,
          mode: 'multiply',
          alpha: 0.5
       });
       
      imageObject.filters.push(filter2);
      imageObject.applyFilters();
      canvas.requestRenderAll();
    }
    
    function changeSrc(){
      var url = 'https://picsum.photos/200/200?random='+ ++i;
      imageObject.setSrc(url,function(){
        canvas.requestRenderAll();
      },{crossOrigin:'annonymous'})
    }
    canvas{
      border:1px solid;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.7.0/fabric.js"></script>
    <button onclick='changeSrc()'>changeSrc</button>
    <button onclick='addFilter()'>addFilter</button><br>
    <canvas id="editorCanvas"></canvas>

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 2022-01-26
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 2020-03-22
      • 2021-01-06
      • 1970-01-01
      • 2015-02-13
      相关资源
      最近更新 更多