我正在寻找一种方法来获得任何给定颜色的匹配颜色。
有没有办法以编程方式或使用库(在Java / Android中)?
谢谢!
(由于颜色与所述颜色很好,这是一个很好的例子:colorcombos.com/colors/FF0000)
答案 0 :(得分:2)
获得最具对比度颜色的简单方法是尽可能反射每种RGB颜色。我的意思是00-7F的值变为FF,80-FF的值变为00.结果总是饱和。
如果您希望免费颜色与原始颜色保持一致,例如柔和的红色变成柔和的青色,事情会变得更复杂,但这一切都取决于您使用的颜色模型,例如: RGB与HSV对比其他人。
您可以为每种RGB颜色使用0xFF - value
的公式,但灰色会保持灰色,因此并不总是很好。
至于如何使用RGB颜色值,这里是如何找到以十六进制字符串给出的颜色的大多数对比颜色。
String color = "2E8B57" // SeaGreen
int r1 = Integer.parseInt(color.substring(0, 2), 16);
int g1 = Integer.parseInt(color.substring(2, 2), 16);
int b1 = Integer.parseInt(color.substring(4, 2), 16);
int r2 = (r1 < 0x80 ? 0xFF : 0x00);
int g2 = (g1 < 0x80 ? 0xFF : 0x00);
int b2 = (b1 < 0x80 ? 0xFF : 0x00);
String newColor = String.format("%02x%02x%02x", r2, g2, b2);
// newColor = "FF00FF" (Fuchsia)
使用另一种方式,你可以使用:
int r2 = 0xFF - r1;
int g2 = 0xFF - g1;
int b2 = 0xFF - b1;
String newColor = String.format("%02x%02x%02x", r2, g2, b2);
// newColor = "D174A8" (Hopbush)