我怎样才能在C中使十六进制颜色变亮/变暗?

时间:2018-02-16 01:18:59

标签: c colors

注意:我还是C的新手。我正在尝试编写一个小的C实用程序,它从stdin或参数和标志中获取十六进制颜色,以指示颜色是否应该变暗或减轻,以百分比。我应该如何进行闪电或变暗?谢谢!

2 个答案:

答案 0 :(得分:2)

要做到这一点,首先将十六进制值解码为三个整数,rgb,转换为双精度数,然后将这些双精度数转换为不同的3D颜色空间哪种亮度或强度是它自己的元素。 HSL / HSV或YIQ / YUV(Google"色彩空间")。然后改变强度,并转换回来。这将确保您获得具有相同饱和度的相同色调的较暗版本(或多或少 - 至少它比仅仅调整RGB值要好得多)。 Google" RGB to HSL"这样就可以找到进行转换的代码。

例如:

https://gist.github.com/mjackson/5311256

答案 1 :(得分:0)

红色,绿色和蓝色的十六进制颜色只是3个字节(00-FF)。 #000000是黑色,#FFFFFFF是白色。因此,您需要从标准输入中读取这3个字节,以整数存储,对特定给定百分比进行除法/乘法(即* 1.20 =增加20%),采用mod FFFFFF并获得结果颜色。