当前位置:首页 > JavaScript

js实现吸色

2026-01-15 14:04:06JavaScript

使用Canvas实现吸色功能

通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。

js实现吸色

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = document.querySelector('img');

img.onload = function() {
  canvas.width = img.width;
  canvas.height = img.height;
  ctx.drawImage(img, 0, 0, img.width, img.height);
};

canvas.addEventListener('click', (e) => {
  const rect = canvas.getBoundingClientRect();
  const x = e.clientX - rect.left;
  const y = e.clientY - rect.top;
  const pixel = ctx.getImageData(x, y, 1, 1).data;
  const rgb = `rgb(${pixel[0]}, ${pixel[1]}, ${pixel[2]})`;
  console.log('Selected color:', rgb);
});

使用EyeDropper API实现吸色

现代浏览器支持EyeDropper API,提供更简单的吸色方式。调用window.EyeDropper接口打开拾色器,返回用户选择的颜色值。

js实现吸色

if ('EyeDropper' in window) {
  const eyeDropper = new EyeDropper();
  eyeDropper.open()
    .then(result => {
      console.log('Selected color:', result.sRGBHex);
    })
    .catch(err => {
      console.error('EyeDropper error:', err);
    });
} else {
  console.log('EyeDropper API not supported');
}

获取DOM元素颜色值

对于页面上的DOM元素,可以通过getComputedStyle方法获取其计算后的样式颜色值。

const element = document.getElementById('target');
const styles = window.getComputedStyle(element);
const color = styles.getPropertyValue('color');
console.log('Element color:', color);

颜色格式转换

将获取的颜色值转换为不同格式,使用正则表达式或颜色转换库实现RGB、HEX、HSL等格式间的转换。

function rgbToHex(rgb) {
  const match = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
  if (!match) return rgb;

  const r = parseInt(match[1]).toString(16).padStart(2, '0');
  const g = parseInt(match[2]).toString(16).padStart(2, '0');
  const b = parseInt(match[3]).toString(16).padStart(2, '0');

  return `#${r}${g}${b}`.toUpperCase();
}

注意事项

Canvas方法受同源策略限制,跨域图片需要设置crossOrigin属性。EyeDropper API需要用户手势触发,不能在页面加载时自动调用。颜色值转换时需考虑透明度处理。

标签: js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…