找出给定颜色的互补/相反颜色

时间:2016-07-20 10:13:00

标签: python

我试图用Python找出给定颜色的补色。这是我的代码。代码返回错误消息告诉" AttributeError:' list'对象没有属性' join'"我需要一个提示。此外,可能会有一个更健壮的代码来计算相反/互补的颜色,我基本上都在寻找。您的建议会有所帮助。

from PIL import Image  

def complementaryColor(hex):
    """Returns complementary RGB color

    Example:
    >>>complementaryColor('FFFFFF')
    '000000'
    """
    if hex[0] == '#':
        hex = hex[1:]
    rgb = (hex[0:2], hex[2:4], hex[4:6])
    comp = ['02%X' % (255 - int(a, 16)) for a in rgb]
    return comp.join()

另一个类似的功能

def blackwhite(my_hex):
    """Returns complementary RGB color

    Example:
    >>>complementaryColor('FFFFFF')
    '000000'
    """
    if my_hex[0] == '#':
        my_hex = my_hex[1:]
    rgb = (my_hex[0:2], my_hex[2:4], my_hex[4:6])
    comp = ['%X' % (0 if (15 - int(a, 16)) <= 7 else 15) for a in rgb]
    return ''.join(comp)


print blackwhite('#36190D')

1 个答案:

答案 0 :(得分:1)

您的join格式需要修复。列表没有join方法,字符串可以:

def complementaryColor(my_hex):
    """Returns complementary RGB color

    Example:
    >>>complementaryColor('FFFFFF')
    '000000'
    """
    if my_hex[0] == '#':
        my_hex = my_hex[1:]
    rgb = (my_hex[0:2], my_hex[2:4], my_hex[4:6])
    comp = ['%02X' % (255 - int(a, 16)) for a in rgb]
    return ''.join(comp)

对于两个十六进制字符而不是%02X,十六进制格式为'02%X'。后者仅将前导02附加到3个字符的受损输出,而不是6个。

hex是内置函数,因此您可以考虑将名称更改为my_hex,以避免隐藏原始hex函数。