当我获得 RGB 格式的颜色时,如何将 channel 转换为(近似)整数比率?
示例:
(255, 0, 0) -> (1, 0, 0)
(255, 128, 0) -> (2, 1, 0)
(128, 64, 0) -> (2, 1, 0)
(255, 1, 0) -> (1, 0, 0)
(3, 2, 0) -> (3, 2, 0)
(11, 5, 0) -> (11, 5, 0) or possibly (2, 1, 0)
如您所见,结果整数应尽可能小,但仍然相当精确,因此人眼无法区分色调误差。
我尝试将所有 channel 除以它们的最小值,然后对其进行舍入,但它为 (3, 2, 0)
生成了 (2, 1, 0)
,这不必要地不精确。
最佳答案
您可以尝试递减因子(1、2、4、8、...、256)并计算一些“舍入误差”。然后坚持误差可接受的最大因素。
-或-
只需将 RGB 转换为色调、饱和度、明度 (HSV),然后在一组有限的色调值中选择最接近的色调值。
关于algorithm - 将 RGB channel 转换为整数比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411893/