java - 有没有办法判断 HTML 十六进制颜色是浅色还是深色

标签 java html jsp

我希望我的 html 页面上的字体颜色在行的背景颜色为浅色时变为黑色,如果背景为白色则变为黑色

我在我的页面中使用 jsp。有没有办法说这样的话

如果颜色 < ##0686FF 那么 fontcolour = #000000 例如

编辑:寻找 scriptlet 或 javascript

最佳答案

此解决方案使用 java.awt.Color 类来导出颜色的亮度值,并使用它来确定应使用哪种背景颜色。

编辑:此解决方案与其他一些解决方案不同,因为其他解决方案会将一些亮色视为暗色,例如。原色红色 (#FF0000)。而此解决方案会将原红色视为您可以拥有的最亮的颜色之一。我想这取决于你的喜好。你想读黑底红字还是白底红字?

String fontColor = "#0cf356";

// remove hash character from string
String rawFontColor = fontColor.substring(1,fontColor.length());

// convert hex string to int
int rgb = Integer.parseInt(rawFontColor, 16);

Color c = new Color(rgb);

float[] hsb = Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), null);

float brightness = hsb[2];

if (brightness < 0.5) {
   // use a bright background
} else {
   // use a dark background
}

HSB 代表色相、饱和度、亮度——亮度也称为发光度。颜色类别值介于 1 和 0 之间。因此,0.5 亮度是最亮颜色和最暗颜色之间的中间点)。

色调、饱和度和亮度之间的相互作用比红色、蓝色和绿色要复杂一些。使用 this工具对不同颜色进行实验,找出RGB和HSB之间的关系

关于java - 有没有办法判断 HTML 十六进制颜色是浅色还是深色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679715/

相关文章:

java - 标签库的目的?

java - 如果有人在我的浏览器中禁用 cookie,我该如何在 java 中进行 session ?

java - 这个有关 TimeUnit Day 转换的 Java 程序有什么问题?

java - Hibernate Envers - 审计实体无法从空的审计表关系中恢复 ID

java - 性能/负载/压力测试编排层

jquery - 如何拖放jquery?

javascript - 使用 SwiftMailer 发送文件获取 SwiftIOException

java - 是否可以读取属性文件中另一个键中的键?

php - 谷歌应用程序接口(interface) |站点标题的 URL

java - 可以在 Web 服务中包含客户端 JAVA API 库吗?