您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

解决方案使用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亮度是最亮的颜色和最暗的颜色之间的中点。

色相,饱和度和亮度之间的相互作用比红色,蓝色和绿色要复杂一些。使用工具尝试不同的颜色,并找到RGB和HSB之间的关系

其他 2022/1/1 18:23:47 有450人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶