rgb_to_hex python snippet.
			#1
		
		
	
							
								
								
									
										50
									
								
								python/rgb_to_hex.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								python/rgb_to_hex.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,50 @@
 | 
			
		||||
def rgb_to_hex(r, g, b, a=None, bg=255, prefix="#"):
 | 
			
		||||
    """
 | 
			
		||||
    Convert given RGB color decimals or floats to Hex string.
 | 
			
		||||
 | 
			
		||||
    Parameters
 | 
			
		||||
    ---
 | 
			
		||||
    r, g, b: float | int
 | 
			
		||||
        Corresponding channel value. Support decimal or float.
 | 
			
		||||
 | 
			
		||||
    a: float | None, Default: None
 | 
			
		||||
        Alpha value for generate simulated transparent color.
 | 
			
		||||
        If specified, the returned hex color should looks like
 | 
			
		||||
        rendered as `a` alpha value, on the given background `bg`.
 | 
			
		||||
        Default to None, which means disable simuating transparent.
 | 
			
		||||
 | 
			
		||||
    bg: int, Default: 255
 | 
			
		||||
        If `a` is specified, `bg` will be used as the background
 | 
			
		||||
        for render transparent color.
 | 
			
		||||
        Default to 255, which means 'white' background.
 | 
			
		||||
 | 
			
		||||
    Examples
 | 
			
		||||
    ---
 | 
			
		||||
    >>> rgb_to_hex(255, 0, 255)
 | 
			
		||||
    '#FF00FF'
 | 
			
		||||
 | 
			
		||||
    >>> rgb_to_hex(255, 255, 0, a=0.0625, bg=0)
 | 
			
		||||
    '#0F0F00'
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def to_decimal(v, base=255) -> int:
 | 
			
		||||
        if isinstance(v, float) and v <= 1:
 | 
			
		||||
            v *= base
 | 
			
		||||
        return int(v)
 | 
			
		||||
 | 
			
		||||
    def patch_alpha(v, alpha, bg=255):
 | 
			
		||||
        return int(v * alpha + bg * (1 - alpha))
 | 
			
		||||
 | 
			
		||||
    r = to_decimal(r)
 | 
			
		||||
    g = to_decimal(g)
 | 
			
		||||
    b = to_decimal(b)
 | 
			
		||||
 | 
			
		||||
    if a is not None:
 | 
			
		||||
        r = patch_alpha(r, a, bg)
 | 
			
		||||
        g = patch_alpha(g, a, bg)
 | 
			
		||||
        b = patch_alpha(b, a, bg)
 | 
			
		||||
 | 
			
		||||
    if prefix is None:
 | 
			
		||||
        prefix = ""
 | 
			
		||||
 | 
			
		||||
    return f"{prefix}{r:02X}{g:02X}{b:02X}"
 | 
			
		||||
		Reference in New Issue
	
	Block a user