注意:我还是C的新手。我正在尝试编写一个小的C实用程序,它从stdin或参数和标志中获取十六进制颜色,以指示颜色是否应该变暗或减轻,以百分比。我应该如何进行闪电或变暗?谢谢!
答案 0 :(得分:2)
要做到这一点,首先将十六进制值解码为三个整数,r
,g
和b
,转换为双精度数,然后将这些双精度数转换为不同的3D颜色空间哪种亮度或强度是它自己的元素。 HSL / HSV或YIQ / YUV(Google"色彩空间")。然后改变强度,并转换回来。这将确保您获得具有相同饱和度的相同色调的较暗版本(或多或少 - 至少它比仅仅调整RGB值要好得多)。 Google" RGB to HSL"这样就可以找到进行转换的代码。
例如:
答案 1 :(得分:0)
红色,绿色和蓝色的十六进制颜色只是3个字节(00-FF)。 #000000是黑色,#FFFFFFF是白色。因此,您需要从标准输入中读取这3个字节,以整数存储,对特定给定百分比进行除法/乘法(即* 1.20 =增加20%),采用mod FFFFFF并获得结果颜色。