Python中处理颜色的实用工具。
项目描述
一个提供Python中处理颜色实用工具的库。颜色通过Color类建模,可以表示为RGB、HEX、WEB和YIQ格式。
0. 安装
colorutils可以从pypi安装
pip install colorutils
从pypi更新现有安装到最新版本
pip install colorutils --upgrade
1. 当前功能
v0.2.1(发布于2015年5月25日)
Windows上pip安装找不到包的bug修复
v0.2(发布于2015年5月23日)
添加HSV颜色表示和转换
添加YIQ颜色表示和转换
颜色对象可以作为可迭代对象处理
颜色运行实现
添加预定义颜色调色板
包重构
v0.1(发布日期:2015年5月16日)
一种通用的抽象颜色模型,允许颜色加法和减法
颜色之间的转换:RGB元组、6字符HEX字符串、3字符HEX字符串和颜色的WEB表示。
随机颜色生成
2. 报告错误/请求功能
要报告colorutils的错误或请求功能,请打开一个新的问题
3. 使用方法
3.1 实例化一个Color
实例化Color的基本方法
>>> from colorutils import Color >>> c = Color((255, 255, 255)) >>> c <Color (255, 255, 255)>
默认情况下,Color对象期望一个RGB 3元组,但有多种方式可以实例化一个Color。以青色为例,可能性
Color((0, 255, 255)) Color(green=255, blue=255) Color(rgb=(0, 255, 255)) Color(hex='#00FFFF') Color(hex='00ffff') Color(hex='#0ff') Color(hex='0ff') Color(web='cyan') Color(web='Cyan') Color(web='CYAN') Color(web='#00ffff') Color(web='#0ff') Color(yiq=(0.701, -0.596, -0.217)) Color(hsv=(180, 1, 1))
Color对象也可以从其他Color对象中获取颜色
>>> Color(Color((255, 255, 255))) <Color (255, 255, 255)> >>> Color(Color(Color(Color((255, 255, 255))))) <Color (255, 255, 255)>
3.2 颜色转换
colorutils支持的当前颜色模型是:RGB、HEX、WEB、YIQ和HSV。每个实例化的Color对象都有属性,可以自动执行所需的转换
>>> c = Color((46, 139, 87)) >>> c.red 46 >>> c.green 139 >>> c.blue 87 >>> c.rgb (46, 139, 87) >>> c.hex '#2e8b57' >>> c.shorthex '#2e8b57' >>> c.web 'SeaGreen' >>> c.yiq (0.413, -0.152, -0.143) >>> c.hsv (146.452, 0.669, 0.545)
如果颜色是这样的,HEX表示可以捕获为3字符的十六进制
>>> c = Color((0, 0, 0)) >>> c.hex '#000000' >>> c.shorthex '#000'
如果颜色不是已知的网络颜色名称,则WEB表示将返回十六进制值
>>> c = Color((1, 243, 77)) >>> c.hex '#01f34d' >>> c.web '#01f34d'
这些相同的转换可以通过使用静态方法在不实例化Color对象的情况下完成
rgb_to_hex()
rgb_to_web()
rgb_to_yiq()
rgb_to_hsv()
hex_to_rgb()
hex_to_web()
hex_to_yiq()
hex_to_hsv()
web_to_rgb()
web_to_hex()
web_to_yiq()
web_to_hsv()
yiq_to_rgb()
yiq_to_hex()
yiq_to_web()
yiq_to_hsv()
hsv_to_rgb()
hsv_to_hex()
hsv_to_web()
hsv_to_yiq()
使用这些静态转换方法,可以链式转换(由于所有多值颜色表示的输入参数和输出参数都是元组),这是您无法使用Python默认的colorsys完成的。
>>> rgb_to_hex(hex_to_rgb('#808080')) '#808080'
当然,要小心链式操作。由于转换算法中存在近似,因此会发生退化
>>> yiq_to_web(rgb_to_yiq(hex_to_rgb('808080'))) '#7f807e'
尽管如此,值仍然很接近
>>> hex(int('80', 16) - int('7f', 16)) # Red difference '0x1' >>> hex(int('80', 16) - int('80', 16)) # Green difference '0x0' >>> hex(int('80', 16) - int('7e', 16)) # Blue difference '0x2'
3.3 Color 算术
尽管颜色加法和减法不一定有意义,但这种能力得到了支持。目前支持两种加法模型:LIGHT和BLEND。
3.3.1 加法
- LIGHT
光模型是一种加法模型,rgb组件相加,但不超出最大值255。这是默认模型,每个Color都是用此模型初始化的,除非被覆盖。
光加法的一个例子
>>> Color((0, 100, 200)) + Color((100, 100, 100)) <Color (100, 200, 255)>
- BLEND
混合模型是一种平均模型,每个rgb组件都取平均值。
混合加法的一个例子
>>> Color((0, 100, 200), arithmetic=ArithmeticModel.BLEND) + Color((100, 100, 100)) <Color (50, 150, 250)>
在指定模型时,请注意操作中的第一个对象(例如,'Object1 + Object2'中的Object1)的算术模型将用于计算加法。
Color加法也可以对表示RGB值的3元组进行操作
>>> Color((50, 50, 50)) + (20, 20, 20) <Color (70, 70, 70)>
3.3.2 减法
目前只有一个减法模型,等同于LIGHT加法模型的逆。没有表示BLEND逆的模型,因为平均的逆实际上没有意义。
>>> Color((100, 100, 100)) - Color((0, 75, 200)) <Color (100, 25, 0)>
颜色减法 也可以在表示 RGB 值的 3 元组上操作
>>> Color((50, 50, 50)) - (20, 20, 20) <Color (30, 30, 30)>
3.4 颜色相等性
默认情况下,测试颜色之间的相等性是测试 RGB 值之间的相等性
>>> c1 = Color((10, 20, 30)) >>> c2 = Color((10, 20, 30)) >>> c3 = Color((10, 20, 20)) >>> c1 == c2 True >>> c1 == c3 False
可以设置不同的相等性函数,使用 colorutils.equality 中的预定义相等性,或自定义相等性函数
>>> from colorutils.equality import * >>> c = Color((10, 20, 30), equality_fn=RED_eq) >>> c2 = Color((10, 40, 60)) >>> c == c2 True >>> c2 == c False
注意,在上面的示例中,当检查红色相等性时,当具有 RED_eq 相等性的颜色在比较中排在前面时,它评估为 True。如果它排在后面,它评估为 False。这是因为比较中第一个 Color 实例的相等性函数定义了使用哪个相等性函数。
预定义的相等性包括
RGB_eq
RED_eq
GREEN_eq
BLUE_eq
HEX_eq
WEB_eq
YIQ_eq
HSV_eq
定义自定义相等性将遵循以下 RGB_eq 定义的模式
RGB_eq = lambda c1, c2: c1.rgb == c2.rgb
3.5 颜色调色板
存在一些预定义的颜色调色板以方便使用。当前已实现的调色板包括
灰度
主色
RGB
ROYGBV
副色
可以从调色板中使用单个命名的颜色,或检索所有颜色
>>> import colorutils.palettes.primary as primary >>> primary.red <Color (255, 0, 0)> >>> primary.yellow <Color (255, 255, 0)> >>> primary.blue <Color (0, 0, 255)> >>> primary.all [<Color (255, 0, 0)>, <Color (255, 255, 0)>, <Color (0, 0, 255)>]
4. colorutils 与其他工具的比较
要查看 colorutils 转换算法与其他算法/提供值的比较,请参阅 比较 维基页面。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
colorutils-0.3.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d116d4d9119bdb9ab26c05beaaffa10473a21dbfb22e8842bf1cc29513c3cab |
|
MD5 | 6b1b7a2690f2bb536958f0b870976e24 |
|
BLAKE2b-256 | 90bbbec37d30ca26b5f3716b42bc81c187bc0ec9e8a87a8a23b5b2d54590db30 |
colorutils-0.3.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 767ae0fbde51355bdaa1d09f8de30c3a2c2474a3120778eae9bc8a25ee727f55 |
|
MD5 | 81ad7df7203f6bfdeef3a709925da8d3 |
|
BLAKE2b-256 | b95275ff95b1ecad884703bc3c5cb25670b9cf8f6dfc65fa1cbd2280227b48c8 |