为什么python-colormath不能将sRGB转换为Adobe RGB?

时间:2016-06-16 04:26:34

标签: python color-space

这似乎是一个简单的问题,正是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)

1 个答案:

答案 0 :(得分:1)

使用您的示例的convert_color定义中的conversion变量的内容是一个空列表,这意味着没有要执行的转换,因此定义不会失败并返回{{1}使用原始 sRGB 颜色初始化。我不确定为什么会这样。

或者,我是另一个适合您案例的Python Colour Science API的维护者,但它可能比new_color更具参与性,因为它不会抽象转换:

colormath