Skip to content

Colors 模块

模块介绍

颜色工具模块,旨在方便与 NeoPixel 一起使用,提供了多种颜色方案。模块中包含了一系列预定义的颜色常量、生成随机颜色的方法、创建渐变色序列的功能以及将数值映射到特定颜色的工具。这些功能特别适用于需要动态色彩变化的应用场景,如 LED 灯带控制等。

导入方式

python
from colors import *
# 或
from colors import RED, BLUE, generate_gradient_colors, generate_rainbow_colors

颜色常量

颜色常量含义RGB 值
WHITE白色(255, 255, 255)
BLACK黑色(0, 0, 0)
GRAY/GREY灰色(128, 128, 128)
RED红色(255, 0, 0)
ORANGE橙色(255, 165, 0)
YELLOW黄色(255, 255, 0)
GREEN绿色(0, 255, 0)
CYAN青色(0, 255, 255)
BLUE蓝色(0, 0, 255)
PURPLE紫色(128, 0, 128)
PINK柔和粉(255, 105, 180)
MAGENTA品红色(255, 0, 255)
LIME酸橙色(50, 205, 50)
TEAL水鸭色(0, 128, 128)
INDIGO靛蓝色(99, 102, 241)
VIOLET紫罗兰色(139, 92, 246)
FUCHSIA芙蓉色(236, 72, 153)
ROSE玫瑰红(244, 63, 94)
BROWN棕色(139, 69, 19)
MAROON栗色(128, 0, 0)
NAVY海军蓝(0, 0, 128)
OLIVE橄榄色(128, 128, 0)

颜色列表

  • COLORS: 包含所有颜色常量的列表
  • RAINBOW: 彩虹颜色序列 [RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, PURPLE]
  • VOLUME_BAR: 冷到暖渐变序列

核心函数

函数参数返回类型说明
generate_random_color()tuple返回一个随机选择的预定义颜色(RGB 元组)
generate_random_rgb()min_val=0 (int), max_val=255 (int)tuple返回一个随机 RGB 颜色,各分量在指定范围内
generate_gradient_colors()start_color (tuple), end_color (tuple), steps (int), mid_color=None (tuple)list生成从起始色到结束色的渐变色列表,可选中间色
generate_rainbow_colors()n (int)list生成长度为 n 的彩虹颜色序列
offset_colors()colors (list), steps (int)list对输入的颜色列表进行偏移操作,并返回新的颜色列表
map_value_to_color()value (float), value_min (float), value_max (float), gradient_colors (list)tuple将数值映射到渐变颜色列表中的对应颜色
dim_color()color (tuple), factor=0.9 (float)tuple按照因子调整颜色亮度(变暗)
brighten_color()color (tuple), factor=0.9 (float)tuple按照因子调整颜色亮度(变亮)
scale_color()color (tuple), scale (float)tuple按照比例缩放颜色亮度
is_same_color()color1 (tuple), color2 (tuple)bool判断两个颜色是否相同
is_qualified_color()color (tuple)bool检查输入是否为合法的颜色格式

使用示例

python
from colors import RED, BLUE, GREEN, generate_gradient_colors, generate_rainbow_colors
from colors import map_value_to_color, VOLUME_BAR

# 使用颜色常量
color = RED  # (255, 0, 0)

# 生成渐变
gradient = generate_gradient_colors(RED, GREEN, steps=10)
print(f"渐变色序列为:{gradient}")

# 生成彩虹色序列
rainbow = generate_rainbow_colors(7)
print(f"彩虹色序列为:{rainbow}")

# 偏移颜色
original_colors = [RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET]
shifted_colors = offset_colors(original_colors, steps=1)
print("原始颜色列表:", original_colors)
print("偏移后的颜色列表:", shifted_colors)

# 数值映射到颜色
mapped_color = map_value_to_color(50, 0, 100, gradient)
print("数值50对应的渐变色为:", mapped_color)

# 音量条颜色映射
volume = 75
color = map_value_to_color(volume, 0, 100, VOLUME_BAR)

注意事项

  • 所有颜色值均为 RGB 格式,各分量范围 0~255
  • 颜色常量可以直接作为元组使用,无需额外转换
  • 渐变函数中的 steps 参数必须为正整数
  • 数值映射函数会自动处理超出范围的值(返回边界颜色)