在Python中将RGB颜色元组转换为六位数的代码
我需要转换(0,128,64)像这样的#008040。 我不确定怎么称呼后者,使search困难。
使用格式运算符%
:
>>> '#%02x%02x%02x' % (0, 128, 64) '#008040'
请注意,它不会检查边界…
>>> '#%02x%02x%02x' % (0, -1, 9999) '#00-1270f'
def clamp(x): return max(0, min(x, 255)) "#{0:02x}{1:02x}{2:02x}".format(clamp(r), clamp(g), clamp(b))
这使用了string格式化的首选方法,如PEP 3101中所述 。 它还使用min()
和max
来确保0 <= {r,g,b} <= 255
。
更新添加了钳位function,如下所示。
更新从问题的标题和上下文给出,这应该是显而易见的,这需要在[0,255]三个整数,并将始终返回一个颜色,当传递3这样的整数。 但是,从评论来看,这可能对每个人都不明显,所以要明确说明:
提供三个
int
值,这将返回一个有效的hex三元组表示一种颜色。 如果这些值介于[0,255]之间,则将它们视为RGB值并返回与这些值相对应的颜色。
triplet = (0, 128, 64) print '#'+''.join(map(chr, triplet)).encode('hex')
要么
from struct import pack print '#'+pack("BBB",*triplet).encode('hex')
python3略有不同
from base64 import b16encode print(b'#'+b16encode(bytes(triplet)))
这是一个古老的问题,但对于信息,我开发了一些与颜色和colormaps相关的实用程序的包,并包含您正在寻找将三元组转换为六值的rgb2hex函数(可以在许多其他软件包中find,例如matplotlib)。 这是在pypi上
pip install colormap
接着
>>> from colormap import rgb2hex >>> rgb2hex(0, 128, 64) '##008040'
input的有效性被检查(值必须在0和255之间)。
您好,我已经创build了一个完整的Python程序,下面的函数可以将rgb转换为hex,反之亦然。
def rgb2hex(r,g,b): hex = "#{:02x}{:02x}{:02x}".format(r,g,b) return hex def hex2rgb(hexcode): rgb = tuple(map(ord,hexcode[1:].decode('hex'))) return rgb
您可以在以下链接中看到完整的代码和教程: 使用Python将RGB转换为hex和hex转换为RGB