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 参数必须为正整数
- 数值映射函数会自动处理超出范围的值(返回边界颜色)