gpt4 book ai didi

php - 十六进制网页颜色

转载 作者:可可西里 更新时间:2023-10-31 22:07:55 25 4
gpt4 key购买 nike

您好,我在 php 中将颜色显示为十六进制值。是否可以通过从十六进制值中减去一个数字来改变颜色的深浅?我想做的是显示生动的网络安全颜色,但如果选择,我想使颜色变暗或变亮。我知道我只能使用两种深浅的颜色,但我可以使用数百种可能的颜色。

需要明确的是,#66cc00 是亮绿色,而#99ffcc 是非常淡的绿色。我减去什么得到第二种颜色?有没有什么公式,因为我可以得到它。

感谢您的帮助

干杯

最佳答案

十六进制颜色由 6 个十六进制数字组成。前两位数字代表红色,后两位代表绿色,最后两位代表蓝色。在色调中,00 是没有颜色,FF 是颜色的最高值。因此,#FF0000 将是鲜红色,没有绿色或蓝色,#00CCFF 将是非常蓝色和一点绿色,完全没有红色。

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

在将它们转换为十进制之前,您应该将颜色分解为红色、绿色和蓝色分量,对两者进行平均,然后再转换回来:

#66 CC 00 -> 102 204 0

#99 FF CC -> 153 255 204

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

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

可以找到一个十六进制和十进制之间的转换器来自己做这个 here .

Here is a PHP script那做你需要的。这是一个基于上述方法的 JavaScript 脚本(相关 hex to decimal conversion in 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;

关于php - 十六进制网页颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com