这似乎是一个简单的问题,正是colormath
的设计目标。但是调用convert_color
似乎返回传入的相同对象。根据the documentation,失败的转换应该引发UndefinedConversionError
,而不是返回对象。
>>> from colormath.color_objects import sRGBColor, AdobeRGBColor
>>> from colormath.color_conversions import convert_color
>>> srgb = sRGBColor(0.0, 1.0, 0.0)
>>> srgb
sRGBColor(rgb_r=0.0,rgb_g=1.0,rgb_b=0.0)
>>> argb = convert_color(srgb, AdobeRGBColor)
>>> argb
sRGBColor(rgb_r=0.0,rgb_g=1.0,rgb_b=0.0)
>>> argb is srgb
True
它可以转换为Lab
,因此我不确定问题是什么。
>>> from colormath.color_objects import LabColor
>>> convert_color(srgb, LabColor)
LabColor(lab_l=87.73500278716472,lab_a=-86.1829494051608,lab_b=83.1795364492565)
答案 0 :(得分:1)
使用您的示例的convert_color定义中的conversion
变量的内容是一个空列表,这意味着没有要执行的转换,因此定义不会失败并返回{{1}使用原始 sRGB 颜色初始化。我不确定为什么会这样。
或者,我是另一个适合您案例的Python Colour Science API的维护者,但它可能比new_color
更具参与性,因为它不会抽象转换:
colormath