Beispiel #1
0
 def xy2rgb(cls, value):
     rgb = None
     if isinstance(value, (list, tuple)):
         if len(value) == 3:
             rgb = value
         elif len(value) == 2:
             xy = xyYColor(*value, 0)
             srgb = convert_color(xy, sRGBColor)
             rgb = srgb.get_upscaled_value_tuple()
     return rgb
def XYZ_to_xyY(cobj, *args, **kwargs):
    """
    Convert from XYZ to xyY.
    """

    xyy_x = cobj.xyz_x / (cobj.xyz_x + cobj.xyz_y + cobj.xyz_z)
    xyy_y = cobj.xyz_y / (cobj.xyz_x + cobj.xyz_y + cobj.xyz_z)
    xyy_Y = cobj.xyz_y

    return xyYColor(
        xyy_x, xyy_y, xyy_Y, observer=cobj.observer, illuminant=cobj.illuminant)
def XYZ_to_xyY(cobj, *args, **kwargs):
    """
    Convert from XYZ to xyY.
    """

    xyy_x = cobj.xyz_x / (cobj.xyz_x + cobj.xyz_y + cobj.xyz_z)
    xyy_y = cobj.xyz_y / (cobj.xyz_x + cobj.xyz_y + cobj.xyz_z)
    xyy_Y = cobj.xyz_y

    return xyYColor(
        xyy_x, xyy_y, xyy_Y, observer=cobj.observer, illuminant=cobj.illuminant)
Beispiel #4
0
def XYZ_to_xyY(cobj, *args, **kwargs):
    """
    Convert from XYZ to xyY.
    """
    xyz_sum = cobj.xyz_x + cobj.xyz_y + cobj.xyz_z
    # avoid division by zero
    if xyz_sum == 0.0:
        xyy_x = 0.0
        xyy_y = 0.0
    else:
        xyy_x = cobj.xyz_x / xyz_sum
        xyy_y = cobj.xyz_y / xyz_sum
    xyy_Y = cobj.xyz_y

    return xyYColor(
        xyy_x, xyy_y, xyy_Y, observer=cobj.observer, illuminant=cobj.illuminant)
def XYZ_to_xyY(cobj, *args, **kwargs):
    """
    Convert from XYZ to xyY.
    """
    xyz_sum = cobj.xyz_x + cobj.xyz_y + cobj.xyz_z
    # avoid division by zero
    if xyz_sum == 0.0:
        xyy_x = 0.0
        xyy_y = 0.0
    else:
        xyy_x = cobj.xyz_x / xyz_sum
        xyy_y = cobj.xyz_y / xyz_sum
    xyy_Y = cobj.xyz_y

    return xyYColor(
        xyy_x, xyy_y, xyy_Y, observer=cobj.observer, illuminant=cobj.illuminant)
Beispiel #6
0
    def __init__(self, ketra, name, area, output_type, xy_chroma, level,
                 load_type, uid):
        """Initializes the Output."""
        super(Output, self).__init__(ketra, name, area, uid)
        self._output_type = output_type
        self._load_type = load_type
        self._level = level
        self._xy = xy_chroma
        xyY = xyYColor(xy_chroma[0], xy_chroma[1], 1)
        rgb = convert_color(xyY, sRGBColor)
        self._rgb = [rgb.rgb_r, rgb.rgb_g, rgb.rgb_b]
        hs = convert_color(xyY, HSVColor)
        self._hs = [hs.hsv_h, hs.hsv_s]
        self._cct = None
        self._xy_chroma = None
        self._query_waiters = _RequestHelper()

        self._ketra.register_id(Output.CMD_TYPE, self)
Beispiel #7
0
def _temp_to_white(t):
	"""Convert color temperature to sRGB white point tuple."""
	# Use equation from:
	#   http://en.wikipedia.org/wiki/Planckian_locus#Approximation
	xc = 0.0
	if 1667.0 <= t and t <= 4000.0:
		xc = -0.2661239*(math.pow(10.0, 9.0)/math.pow(t, 3.0)) - 0.2343580*(math.pow(10.0, 6.0)/math.pow(t, 2.0)) + 0.8776956*(math.pow(10.0, 3.0)/float(t)) + 0.179910
	elif 4000 < t and t <= 25000.0:
		xc = -3.0258469*(math.pow(10.0, 9.0)/math.pow(t, 3.0)) + 2.1070379*(math.pow(10.0, 6.0)/math.pow(t, 2.0)) + 0.2226347*(math.pow(10.0, 3.0)/float(t)) + 0.240390
	else:
		raise ValueError('Temperature must be between 1667K and 25000K.')
	yc = 0.0
	if 1667.0 <= t and t <= 2222.0:
		yc = -1.1063814*math.pow(xc, 3.0) - 1.34811020*math.pow(xc, 2.0) + 2.18555832*xc - 0.20219683
	elif 2222.0 < t and t <= 4000.0:
		yc = -0.9549476*math.pow(xc, 3.0) - 1.37418593*math.pow(xc, 2.0) + 2.09137015*xc - 0.16748867
	elif 4000.0 < t and t <= 25000.0:
		yc =  3.0817580*math.pow(xc, 3.0) - 5.87338670*math.pow(xc, 2.0) + 3.75112997*xc - 0.37001483
	# Covert from full bright xyY color space to RGB (sRGB default) for white point at specified temp.
	white = xyYColor(xc, yc, 1.0).convert_to('rgb').get_value_tuple()
	# Return values normalized to 0-1.0 range.
	return (white[0] / 255.0, white[1] / 255.0, white[2] / 255.0)
 def convertcolorxyYtoRGB(self, _xycolor, brightness):
     [_x, _y] = _xycolor
     _Y = brightness
     _xyY = xyYColor(_x, _y, _Y)
     _rgb = convert_color(_xyY, sRGBColor, target_illuminant='d50')
     maxrgb = max(_rgb.rgb_r, _rgb.rgb_g, _rgb.rgb_b)
     if maxrgb > 1:
         _r = _rgb.rgb_r / maxrgb
         _g = _rgb.rgb_g / maxrgb
         _b = _rgb.rgb_b / maxrgb
     else:
         _r = _rgb.rgb_r
         _g = _rgb.rgb_g
         _b = _rgb.rgb_b
     _r = int(round(_r * 255, 0))
     _g = int(round(_g * 255, 0))
     _b = int(round(_b * 255, 0))
     if _r < 0:
         _r = _r + 255
     if _g < 0:
         _g = _g + 255
     if _b < 0:
         _b = _b + 255
     return (_r, _g, _b)
Beispiel #9
0
  ill = "d65"

  fmtstrttl = 5 * "{:12s}  " + "\n"
  fmtstr    = 5 * "{:12.10f}  " + "\n"

  with open("PaV.dat", "w") as fileout:

    fileout.write(
      fmtstrttl.format(
        "x", "y", "r", "g", "b"
      )
    )

    for x in drange(xmin, xmax, valinc):
      for y in drange(ymin, ymax, valinc):
        xyY = xyYColor(x, y, Y, observer=obs, illuminant=ill)
        rgb = convert_color(xyY, sRGBColor)
        rgb_clamped = sRGBColor(
          rgb.clamped_rgb_r,
          rgb.clamped_rgb_g,
          rgb.clamped_rgb_b
        )

        r, g, b = rgb_clamped.get_value_tuple()

        fileout.write(
          fmtstr.format(
            x, y, r, g, b,
          )
        )
Beispiel #10
0
def toLab(x, y, Y):
    color = convert_color(xyYColor(x, y, Y, illuminant='C'), XYZColor)
    color.apply_adaptation('D65')
    return convert_color(color, LabColor)
Beispiel #11
0
def toLab(x, y, Y):
    color = convert_color(xyYColor(x, y, Y, illuminant='C'), XYZColor)
    color.apply_adaptation('D65')
    return convert_color(color, LabColor)
 def test_conversion_to_xyy(self):
     xyy = convert_color(self.color, xyYColor)
     self.assertColorMatch(xyy, xyYColor(0.167, 0.333, 0.200))
 def setUp(self):
     self.color = xyYColor(0.167, 0.333, 0.200)
Beispiel #14
0
 def setUp(self):
     self.color = xyYColor(0.167, 0.333, 0.200)
Beispiel #15
0
 def test_conversion_to_xyy(self):
     xyy = convert_color(self.color, xyYColor)
     self.assertColorMatch(xyy, xyYColor(0.167, 0.333, 0.200))