add HSV support
This commit is contained in:
parent
adc7c9d5b1
commit
a9f4213952
|
@ -26,11 +26,12 @@ class Color():
|
||||||
color = np.zeros(3,'d')):
|
color = np.zeros(3,'d')):
|
||||||
|
|
||||||
self.__transforms__ = \
|
self.__transforms__ = \
|
||||||
{'HSL': {'index': 0, 'next': self._HSL2RGB},
|
{'HSV': {'index': 0, 'next': self._HSV2HSL},
|
||||||
'RGB': {'index': 1, 'next': self._RGB2XYZ, 'prev': self._RGB2HSL},
|
'HSL': {'index': 1, 'next': self._HSL2RGB, 'prev': self._HSL2HSV},
|
||||||
'XYZ': {'index': 2, 'next': self._XYZ2CIELAB, 'prev': self._XYZ2RGB},
|
'RGB': {'index': 2, 'next': self._RGB2XYZ, 'prev': self._RGB2HSL},
|
||||||
'CIELAB': {'index': 3, 'next': self._CIELAB2MSH, 'prev': self._CIELAB2XYZ},
|
'XYZ': {'index': 3, 'next': self._XYZ2CIELAB, 'prev': self._XYZ2RGB},
|
||||||
'MSH': {'index': 4, 'prev': self._MSH2CIELAB},
|
'CIELAB': {'index': 4, 'next': self._CIELAB2MSH, 'prev': self._CIELAB2XYZ},
|
||||||
|
'MSH': {'index': 5, 'prev': self._MSH2CIELAB},
|
||||||
}
|
}
|
||||||
|
|
||||||
model = model.upper()
|
model = model.upper()
|
||||||
|
@ -84,6 +85,47 @@ class Color():
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def _HSV2HSL(self):
|
||||||
|
"""
|
||||||
|
Convert H(ue) S(aturation) V(alue or brightness) to H(ue) S(aturation) L(uminance)
|
||||||
|
|
||||||
|
with all values in the range of 0 to 1
|
||||||
|
http://codeitdown.com/hsl-hsb-hsv-color/
|
||||||
|
"""
|
||||||
|
|
||||||
|
if self.model != 'HSV': return
|
||||||
|
print "HSV: ",self.color
|
||||||
|
converted = Color('HSL',np.array([
|
||||||
|
self.color[0],
|
||||||
|
1. if self.color[2] == 0.0 or (self.color[1] == 0.0 and self.color[2] == 1.0) \
|
||||||
|
else self.color[1]*self.color[2]/(1.-abs(self.color[2]*(2.-self.color[1])-1.)),
|
||||||
|
0.5*self.color[2]*(2.-self.color[1]),
|
||||||
|
]))
|
||||||
|
|
||||||
|
self.model = converted.model
|
||||||
|
self.color = converted.color
|
||||||
|
|
||||||
|
|
||||||
|
def _HSL2HSV(self):
|
||||||
|
"""
|
||||||
|
Convert H(ue) S(aturation) L(uminance) to H(ue) S(aturation) V(alue or brightness)
|
||||||
|
|
||||||
|
with all values in the range of 0 to 1
|
||||||
|
http://codeitdown.com/hsl-hsb-hsv-color/
|
||||||
|
"""
|
||||||
|
|
||||||
|
if self.model != 'HSL': return
|
||||||
|
|
||||||
|
h = self.color[0]
|
||||||
|
b = self.color[2]+0.5*(self.color[1]*(1.-abs(2*self.color[2]-1)))
|
||||||
|
s = 1.0 if b == 0.0 else 2.*(b-self.color[2])/b
|
||||||
|
|
||||||
|
converted = Color('HSV',np.array([h,s,b]))
|
||||||
|
|
||||||
|
self.model = converted.model
|
||||||
|
self.color = converted.color
|
||||||
|
|
||||||
|
|
||||||
def _HSL2RGB(self):
|
def _HSL2RGB(self):
|
||||||
"""
|
"""
|
||||||
Convert H(ue) S(aturation) L(uminance) to R(red) G(reen) B(lue)
|
Convert H(ue) S(aturation) L(uminance) to R(red) G(reen) B(lue)
|
||||||
|
|
Loading…
Reference in New Issue