六角网颜色

Mic*_*ick 4 html php math hex colors

嗨我在php中显示颜色为十六进制值.是否可以通过从十六进制值中减去一个数字来改变颜色的阴影?我想要做的是显示生动的网页安全色,但如果选择我想要暗淡或淡化颜色.我知道我可以使用两种颜色但我可以使用数百种颜色.

要清楚#66cc00是亮绿色,#99ffcc是非常浅绿色.我减去什么来获​​得第二种颜色?是否有任何公式,因为我可以得到它.

谢谢你的帮助

干杯

Tre*_*ner 5

六角形颜色由6个十六进制数字组成.前两位数字用于红色,第二位用于绿色,最后两位用于蓝色.在阴影中,00是没有颜色,FF是颜色的最高值.因此,#FF0000将是鲜红色,没有绿色或蓝色,#00CCFF将是非常蓝色和一点绿色,根本没有红色.

您提供的示例颜色实际上具有不同的红色,绿色和蓝色组成. #66CC00主要是绿色,有些红色,而#99FFCC主要是绿色,有些是蓝色和红色.

您应该将颜色分解为红色,绿色和蓝色组件,然后再将它们转换为十进制,平均两个,然后转换回:

#66 CC 00 - > 102 204 0

#99 FF CC - > 153 255 204

两者之间的平均值:128 230 102:#80E666

找到中间颜色后,您可以近似最接近的网页安全颜色:#99FF66

可以在此处找到十六进制和十进制之间的转换器来自己完成此操作.

这是一个PHP脚本,可以满足您的需求.这是一个基于上述方法的JavaScript脚本(JS中的十进制到十进制转换):

color1 = "#66CC00";
color2 = "#99FFCC";

r1 = parseInt(color1.substring(1,3), 16);
g1 = parseInt(color1.substring(3,5), 16);
b1 = parseInt(color1.substring(5,7), 16);
r2 = parseInt(color2.substring(1,3), 16);
g2 = parseInt(color2.substring(3,5), 16);
b2 = parseInt(color2.substring(5,7), 16);

r3 = (Math.round((r1 + r2)/2)).toString(16);
g3 = (Math.round((g1 + g2)/2)).toString(16);
b3 = (Math.round((b1 + b2)/2)).toString(16);

color3 = "#" + r3 + g3 + b3;
Run Code Online (Sandbox Code Playgroud)