在鼠标移动中获取fabric.js中图像像素的rgb值

 手机用户2502873837 发布于 2022-12-12 19:14

如何在鼠标移动中获取fabric.js中图像的rgb值.我使用了图像对象的getFill()方法,但它返回(0,0,0).请帮我

1 个回答
  • FabricJS没有获取像素颜色的本机方法.

    解决方法是使用本机html5画布来获取像素数据:

    创建Fabric图像对象.请务必指定crossOrigin为"匿名",否则画布将受到安全违规的污染,然后像素数据将不可用.

    收听Fabric的'mouse:move'活动.当它触发时,获取当前鼠标位置并使用本机画布context.getImageData来获取该像素的颜色数组.

    祝你的项目好运!

    这是annotatede代码和演示:

    // create a Fabric.Canvas
    var canvas = new fabric.Canvas("canvas");
    
    // get a reference to <p id=results></p>
    // (used to report pixel color under mouse)
    var results = document.getElementById('results');
    
    // get references to the html canvas element & its context
    var canvasElement = document.getElementById('canvas');
    var ctx = canvasElement.getContext("2d");
    
    
    // create a test Fabric.Image
    addFabricImage('https://dl.dropboxusercontent.com/u/139992952/multple/colorBar.png');
    
    // listen for mouse:move events
    canvas.on('mouse:move', function(e) {
    
      // get the current mouse position
      var mouse = canvas.getPointer(e.e);
      var x = parseInt(mouse.x);
      var y = parseInt(mouse.y);
    
      // get the color array for the pixel under the mouse
      var px = ctx.getImageData(x, y, 1, 1).data;
    
      // report that pixel data
      results.innerHTML = 'At [' + x + ' / ' + y + ']: Red/Green/Blue/Alpha = [' + px[0] + ' / ' + px[1] + ' / ' + px[2] + ' / ' + px[3] + ']';
    
    });
    
    
    
    // create a Fabric.Image at x,y using a specified imgSrc
    function addFabricImage(imgSrc, x, y) {
    
      // create a new javascript Image object using imgSrc
      var img = new Image();
    
      // be sure to set crossOrigin or else 
      // cross-domain imgSrc's will taint the canvas
      // and then we can't get the pixel data
      // IMPORTANT!: the source domain must be properly configured 
      // to allow crossOrigin='anonymous'
      img.crossOrigin = 'anonymous';
    
      // when the Image object is fully loaded, 
      // use it to create a new fabric.Image object
      img.onload = function() {
    
        var fabImg = new fabric.Image(this, {
          left: 30,
          top: 30
        });
        canvas.add(fabImg);
    
      }
    
      // use imgSrc as the image source
      img.src = imgSrc;
    
    }
    body {
      background-color: ivory;
    }
    canvas {
      border: 1px solid red;
    }
    <script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.4.0/fabric.min.js"></script>
    <p id="results">Move mouse over canvas</p>
    <canvas id=canvas width=300 height=300></canvas>
    2022-12-12 19:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有