更新:

GitHub上的生产就绪代码.

我就是这样做的:

>将HEX转换为RGB

>反转R,G和B组件

>将每个组件转换回HEX

>用零和输出填充每个组件.

function invertColor(hex) {

if (hex.indexOf('#') === 0) {

hex = hex.slice(1);

}

// convert 3-digit hex to 6-digits.

if (hex.length === 3) {

hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];

}

if (hex.length !== 6) {

throw new Error('Invalid HEX color.');

}

// invert color components

var r = (255 - parseInt(hex.slice(0, 2), 16)).toString(16),

g = (255 - parseInt(hex.slice(2, 4), 16)).toString(16),

b = (255 - parseInt(hex.slice(4, 6), 16)).toString(16);

// pad each with zeros and return

return '#' + padZero(r) + padZero(g) + padZero(b);

}

function padZero(str, len) {

len = len || 2;

var zeros = new Array(len).join('0');

return (zeros + str).slice(-len);

}

示例输出:

高级版:

这有一个bw选项,决定是否反转为黑色或白色;所以你会得到更多的对比度,这对人眼来说通常更好.

function invertColor(hex, bw) {

if (hex.indexOf('#') === 0) {

hex = hex.slice(1);

}

// convert 3-digit hex to 6-digits.

if (hex.length === 3) {

hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];

}

if (hex.length !== 6) {

throw new Error('Invalid HEX color.');

}

var r = parseInt(hex.slice(0, 2), 16),

g = parseInt(hex.slice(2, 4), 16),

b = parseInt(hex.slice(4, 6), 16);

if (bw) {

// http://stackoverflow.com/a/3943023/112731

return (r * 0.299 + g * 0.587 + b * 0.114) > 186

? '#000000'

: '#FFFFFF';

}

// invert color components

r = (255 - r).toString(16);

g = (255 - g).toString(16);

b = (255 - b).toString(16);

// pad each with zeros and return

return "#" + padZero(r) + padZero(g) + padZero(b);

}

示例输出:

java如何获得相反的颜色_javascript – 如何根据当前颜色生成相反的颜色?相关推荐

  1. java button随机颜色_Javascript点击按钮随机改变数字与其颜色

    先来看看效果图 实例代码 #box { margin: 100px auto; width: 200px; height: 150px; line-height: 150px; letter-spac ...

  2. java字体颜色编程_java Applet 程序设计讲解2 字体,颜色的使用

    java Applet 程序设计讲解2 字体,颜色的使用 关键词: 字体    颜色 图形界面输出用到的字体,颜色的使用 1.字体类 (Font类) 构造方法: Font(String fontnam ...

  3. python使用matplotlib可视化、使用英文单次或者缩写指定使用的颜色、使用16进制的RGB字符串指定颜色、使用RGB或者RGBA数字元组指定颜色

    python使用matplotlib可视化.使用英文单次或者缩写指定使用的颜色.使用16进制的RGB字符串指定颜色.使用RGB或者RGBA数字元组指定颜色 目录

  4. R语言ggplot2可视化配置图例(legend)标签色彩的升序或者反序(reverse)实战:ggplot2可视化默认图例标签色彩(升序,颜色越来越深)、可视化配置图例标签颜色反序(颜色越来越浅)

    R语言ggplot2可视化配置图例(legend)标签色彩的升序或者反序(reverse)实战:ggplot2可视化默认图例标签色彩(升序,颜色越来越深).可视化配置图例标签颜色反序(颜色越来越浅) ...

  5. python中线条颜色_python中plot用法——线条、点、颜色

    plot画图时可以设定线条参数.包括:颜色.线型.标记风格. 1)控制颜色 颜色之间的对应关系为 b---blue   c---cyan  g---green    k----black m---ma ...

  6. python写excel标记文字颜色_python3使用xlwt时写入文档字体颜色和边框样式

    转自:https://www.cnblogs.com/xiaodingdong/p/8012282.html 可借鉴的网址:https://www.programcreek.com/python/ex ...

  7. linux vi行尾总是显示颜色,【转载】Linux 下使用 vi 没有颜色的解决办法

    vi 是没有颜色的,vim 是有颜色的. 我们可以通过 rpm -qa |grep vim 看看系统中是否安装了下面 3 个 rpm 包,如果有就是安装了 vim . [root@Betty ~]# ...

  8. el-table 行背景颜色_使用HTML添加表格4(行颜色与表格嵌套)——零基础自学网页制作

    行颜色设置的简便方法 昨天我们在<使用HTML添加表格3(间距与颜色)--零基础自学网页制作>(目录在结尾)中学习了设置单元格以及其中内容的空间间距和背景颜色. 其中添加列向单元格背景颜色 ...

  9. 颜色矩特征提取matlab,求matlab彩色图片的颜色特征提取算法的代码,和纹理特征提取的? 爱问知识人...

    其实学数字图像处理,关键的不是源代码(和一般编程还是有区别的,这个是经验之谈,其实一般博导未必会编程,但是你和他说说你的方法,他一般都能切中要害),而是你能理解基于概念及适用场所. 基于颜色.纹理.形 ...

  10. goland设置代码颜色主题(同Sublime Text 3的代码颜色一样)

    原文:idea设置代码颜色主题(同Sublime Text 3的代码颜色一样) 1.下载主题的网址:http://color-themes.com,主题种类多,总有适合你的主题.在这个网址下载的主题是 ...

最新文章

  1. 图灵访谈:柳泽大辅谈如何想出好创意
  2. 第十六届智能车竞赛MCU这么多,该怎么办?别慌,RT-Thread来帮忙。
  3. java.awt.Graphics2D绘制流程图基本元素
  4. Java模块化之路 —— OSGI介绍
  5. pdf百度云下载 python编程 从数据分析到数据科学_python零基础入门教程,不同方向的,这很重要...
  6. linux删除目录排除,Linux中移动,复制,删除,打包排除某个目录或文件
  7. eclipse项目中的.settings .project .classpath 个人见解
  8. 【ARM】Tiny4412裸机编程之GPIO简介
  9. VC2010下Qt5的中文乱码问题
  10. [蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)
  11. JQuery学习记录——DOM的加载
  12. CSS进阶(十)position:relative
  13. 2022年10月24日程序员节日快乐
  14. ArcEngine代码 两规冲突检测
  15. 完美平台反复正在连接至服务器,完美世界无法连接服务器是什么原因
  16. Problem A: 零起点学算法93——矩阵转置
  17. 【手把手制作三阶魔方模拟器】用MATLAB让你的魔方动起来
  18. 配置JDK / JAVA
  19. 从阅文合同风波,看IP源头与网文产业的下一站
  20. javascript对json的处理最佳方法

热门文章

  1. 表单内如何直接贴图而不用上传图片_表单如何添加图片?
  2. echo off备份mysql_windows下备份Linux服务器上的MySQL
  3. mysql主从复制不同步案例_Mysql主从不同步问题处理案例
  4. 解决bbb无法加载uImage问题
  5. 16进制字符串转化为10进制数
  6. python库读取cif文件_Pymatgen读/写各种文件,pymatgen,读写
  7. 固态硬盘 linux 文件系统,SSD是否需要使用特别的文件系统?
  8. MySQL——基本配置
  9. mysql的每隔1分钟定时_mysql定时任务
  10. 【转】如何用好SVN的Branch