当前位置: 首页 > article >正文

【canvas】获取鼠标点击位置坐标的颜色信息

在项目当中,要实现某业务需求例如PS魔棒功能时,则需要获取点击坐标的颜色信息。
功能不复杂,代码也很少,一看便知~~

核心API为getImageData,传入4个参数,前2个为点击坐标xy,后2个都传1;表示以当前点击位置为起点,取宽为1、高为1的像素范围信息;

<html>
  <style>
    .box {
      display: flex;
    }
    #c {
      border: 1px solid rgb(0, 0, 0);
    }
    .color {
      width: 40px;
      height: 40px;
      border: 1px solid red;
    }
  </style>
  <body>
    <div class="box">
      <canvas id="c" width="200" height="200"></canvas>
      <div>点击的颜色:</div>
      <div class="color"></div>
    </div>
    <script>
      c.width = 200;
      c.height = 200;
      var ctx = c.getContext("2d");
      var gr = ctx.createLinearGradient(0, 0, 300, 0);
      gr.addColorStop(0, "#fff");
      gr.addColorStop(0.15, "#8B00FF");
      gr.addColorStop(0.25, "#0000FF");
      gr.addColorStop(0.35, "#00FFFF");
      gr.addColorStop(0.45, "#00FF00");
      gr.addColorStop(0.55, "#FFFF00");
      gr.addColorStop(0.65, "#FF7F00");
      gr.addColorStop(0.75, "#FF0000");
      gr.addColorStop(1, "#fff");

      ctx.fillStyle = gr;
      ctx.fillRect(0, 0, 200, 200);
      c.onmousedown = function (e) {
        console.log(e.offsetX, e.offsetY);
        const imageData = ctx.getImageData(e.offsetX, e.offsetY, 1, 1);
        console.log(imageData);
        const pixelData = imageData.data;
        const color = `rgba(${pixelData[0]}, ${pixelData[1]}, ${pixelData[2]}, ${pixelData[3]})`;
        let el = document.getElementsByClassName('color')[0]
        el.style.background = color;
      };
    </script>
  </body>
</html>


http://www.kler.cn/a/232188.html

相关文章:

  • 高级计算机算法的8道题(贪心、动态规划)
  • Prometheus监控SQL SERVER常用指标和PromQL预警
  • git常用命令+搭vscode使用
  • WSL与Ubuntu系统--使用Linux
  • Spring boot + Vue2小项目基本模板
  • 第9章 DIV+CSS布局
  • 今日学习总结
  • Bee V2.2 分库分表 Sharding+MongoDB ORM 稳定版发布 (更新 Maven)
  • MongoDB聚合: $sort
  • 【Linux】缓冲区与缓冲区的刷新策略
  • 如何修复Mac的“ kernel_task” CPU使用率过高的Bug?
  • PV、UV、IP
  • 【Web】vulhub Shiro-550反序列化漏洞复现学习笔记
  • 计算机网络-无线通信技术与原理
  • 509. 斐波那契数
  • C++ .h文件类的调用
  • 【多模态】27、Vary | 通过扩充图像词汇来提升多模态模型在细粒度感知任务(OCR等)上的效果
  • 面试高频知识点:2线程 2.1.5如何自定义实现一个线程池
  • C语言--------指针(1)
  • muduo库的模拟实现——TcpServer部分
  • 运维高级篇-分库分表(拆分策略详解)
  • 假期作业 7
  • 【嵌入式-传感器】从旋转编码器到学会看懂方波
  • 《动手学深度学习(PyTorch版)》笔记7.6
  • 复制和粘贴文本时剥离格式的5种方法(MacWindows)
  • c# Config 配置文件帮助类