首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python将十六进制转换为RGB值

用Python将十六进制转换为RGB值
EN

Stack Overflow用户
提问于 2015-04-15 06:47:59
回答 13查看 145.1K关注 0票数 132

在这里处理杰里米的回应:将十六进制颜色转换为RGB,反之亦然。 i能够获得一个python程序来转换预设的彩色十六进制代码(例如#B4FB8),但是从最终用户的角度来看,我们不能要求人们编辑代码并从那里运行。如何提示用户输入一个十六进制值,然后让它从那里吐出一个RGB值?

下面是我到目前为止所掌握的代码:

代码语言:javascript
运行
复制
def hex_to_rgb(value):
    value = value.lstrip('#')
    lv = len(value)
    return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))


def rgb_to_hex(rgb):
    return '#%02x%02x%02x' % rgb

hex_to_rgb("#ffffff")              # ==> (255, 255, 255)
hex_to_rgb("#ffffffffffff")        # ==> (65535, 65535, 65535)
rgb_to_hex((255, 255, 255))        # ==> '#ffffff'
rgb_to_hex((65535, 65535, 65535))  # ==> '#ffffffffffff'

print('Please enter your colour hex')

hex == input("")

print('Calculating...')
print(hex_to_rgb(hex()))

使用行print(hex_to_rgb('#B4FBB8')),我可以让它吐出正确的RGB值,即(180,251,184)

这可能非常简单--我对Python仍然很粗糙。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2015-04-15 07:03:37

我相信这做了你想要的:

代码语言:javascript
运行
复制
h = input('Enter hex: ').lstrip('#')
print('RGB =', tuple(int(h[i:i+2], 16) for i in (0, 2, 4)))

(上面是为Python 3编写的)

样本运行:

代码语言:javascript
运行
复制
Enter hex: #B4FBB8
RGB = (180, 251, 184)

写入文件

在保留格式的同时写入带有句柄fhandle的文件:

代码语言:javascript
运行
复制
fhandle.write('RGB = {}'.format( tuple(int(h[i:i+2], 16) for i in (0, 2, 4)) ))
票数 227
EN

Stack Overflow用户

发布于 2020-03-11 06:07:55

您可以使用ImageColor从枕头。

代码语言:javascript
运行
复制
>>> from PIL import ImageColor
>>> ImageColor.getcolor("#23a9dd", "RGB")
(35, 169, 221)
票数 43
EN

Stack Overflow用户

发布于 2020-09-17 15:31:25

只是另一个选择:matplotlib.colors模块。

很简单:

代码语言:javascript
运行
复制
>>> import matplotlib.colors
>>> matplotlib.colors.to_rgb('#B4FBB8')
(0.7058823529411765, 0.984313725490196, 0.7215686274509804)

请注意,to_rgb的输入不必是十六进制颜色格式,它包含几种颜色格式。

您还可以使用不推荐的hex2color

代码语言:javascript
运行
复制
>>> matplotlib.colors.hex2color('#B4FBB8')
(0.7058823529411765, 0.984313725490196, 0.7215686274509804)

额外的好处是,我们有反函数,to_hex和一些额外的函数,例如,rgb_to_hsv

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29643352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档