2016-06-16 42 views
1

これはこのような単純な問題のようです。正確にはcolormathのために設計されました。しかし、convert_colorを呼び出すと、渡されたのと同じオブジェクトが返されるように見えます。the documentationによると、変換が失敗した場合、オブジェクトは返されず、UndefinedConversionErrorになります。なぜpython-colormathはsRGBをAdobe RGBに変換できないのですか?

>>> 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

convert_color定義におけるconversion変数の内容は、実行への変換が存在しないことを意味し、空のリストであり、このような定義が失敗していないと元のと初期化されるnew_colorを返しますsRGBカラー。しかし、なぜこれが当てはまるのか正確にはわかりません。

代わりに、私はあなたのケースのために働くだろう他のPython Colour Science APIのメンテナだ変換を抽象化していないので、それはおそらく、しかしcolormathよりも複雑である:

import colour 

colour.RGB_to_RGB(
    (0, 1, 0), 
    colour.sRGB_COLOURSPACE, 
    colour.ADOBE_RGB_1998_COLOURSPACE) 


# array([ 0.28488056, 1.  , 0.04116936]) 
関連する問題