Update
This commit is contained in:
87
ui/utilities/color_utils.py
Normal file
87
ui/utilities/color_utils.py
Normal file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
颜色工具模块
|
||||
负责颜色处理和转换
|
||||
"""
|
||||
|
||||
|
||||
def darken_color(hex_color: str, factor: float = 0.2) -> str:
|
||||
"""使颜色变暗
|
||||
|
||||
Args:
|
||||
hex_color: 十六进制颜色代码
|
||||
factor: 变暗系数,0-1 之间
|
||||
|
||||
Returns:
|
||||
变暗后的十六进制颜色代码
|
||||
"""
|
||||
# 去除#前缀
|
||||
hex_color = hex_color.lstrip('#')
|
||||
|
||||
# 转换为RGB
|
||||
r = int(hex_color[0:2], 16)
|
||||
g = int(hex_color[2:4], 16)
|
||||
b = int(hex_color[4:6], 16)
|
||||
|
||||
# 降低亮度
|
||||
r = max(0, int(r * (1 - factor)))
|
||||
g = max(0, int(g * (1 - factor)))
|
||||
b = max(0, int(b * (1 - factor)))
|
||||
|
||||
# 转回十六进制
|
||||
return f'#{r:02x}{g:02x}{b:02x}'
|
||||
|
||||
|
||||
def lighten_color(hex_color: str, factor: float = 0.2) -> str:
|
||||
"""使颜色变亮
|
||||
|
||||
Args:
|
||||
hex_color: 十六进制颜色代码
|
||||
factor: 变亮系数,0-1 之间
|
||||
|
||||
Returns:
|
||||
变亮后的十六进制颜色代码
|
||||
"""
|
||||
# 去除#前缀
|
||||
hex_color = hex_color.lstrip('#')
|
||||
|
||||
# 转换为RGB
|
||||
r = int(hex_color[0:2], 16)
|
||||
g = int(hex_color[2:4], 16)
|
||||
b = int(hex_color[4:6], 16)
|
||||
|
||||
# 提高亮度
|
||||
r = min(255, int(r + (255 - r) * factor))
|
||||
g = min(255, int(g + (255 - g) * factor))
|
||||
b = min(255, int(b + (255 - b) * factor))
|
||||
|
||||
# 转回十六进制
|
||||
return f'#{r:02x}{g:02x}{b:02x}'
|
||||
|
||||
|
||||
def hex_to_rgb(hex_color: str) -> tuple:
|
||||
"""将十六进制颜色转换为RGB元组
|
||||
|
||||
Args:
|
||||
hex_color: 十六进制颜色代码
|
||||
|
||||
Returns:
|
||||
RGB颜色元组 (r, g, b)
|
||||
"""
|
||||
hex_color = hex_color.lstrip('#')
|
||||
return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
|
||||
|
||||
|
||||
def rgb_to_hex(r: int, g: int, b: int) -> str:
|
||||
"""将RGB颜色转换为十六进制
|
||||
|
||||
Args:
|
||||
r: 红色分量 (0-255)
|
||||
g: 绿色分量 (0-255)
|
||||
b: 蓝色分量 (0-255)
|
||||
|
||||
Returns:
|
||||
十六进制颜色代码
|
||||
"""
|
||||
return f'#{r:02x}{g:02x}{b:02x}'
|
||||
Reference in New Issue
Block a user