首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RGB Int到RGB - Python

RGB Int到RGB - Python
EN

Stack Overflow用户
提问于 2010-02-15 01:54:30
回答 11查看 61.8K关注 0票数 24

如何将RGB整数转换为相应的RGB元组(R,G,B)?看起来很简单,但我在谷歌上找不到任何东西。

我知道对于每个RGB (r,g,b),你有一个整数n = r256^2 + g256 + b,我如何在Python中解决相反的问题,IE给定一个n,我需要rgb的值。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-02-15 02:06:31

我当然不是Python专家,但据我所知,它的运算符与C语言相同。

如果是这样的话,这应该是可行的,而且它也应该比使用模和除法快得多。

代码语言:javascript
复制
Blue =  RGBint & 255
Green = (RGBint >> 8) & 255
Red =   (RGBint >> 16) & 255

它如何屏蔽每种情况下的最低字节(二进制与255.等于8个1比特)。对于绿色和红色分量,它执行相同的操作,但首先将颜色通道转换到最低的字节。

票数 54
EN

Stack Overflow用户

发布于 2010-02-15 01:59:09

从RGB整数:

代码语言:javascript
复制
Blue =  RGBint mod 256
Green = RGBint / 256 mod 256
Red =   RGBint / 256 / 256 mod 256

一旦您知道如何获取它,就可以非常简单地实现它。:)

更新:新增python函数。不确定是否有更好的方法,但这适用于Python 3和2.4

代码语言:javascript
复制
def rgb_int2tuple(rgbint):
    return (rgbint // 256 // 256 % 256, rgbint // 256 % 256, rgbint % 256)

还有一个很好的解决方案,它使用了位移位和掩码,无疑比Nils Pipenbrinck发布的要快得多。

票数 16
EN

Stack Overflow用户

发布于 2010-11-28 18:05:10

代码语言:javascript
复制
>>> import struct
>>> str='aabbcc'
>>> struct.unpack('BBB',str.decode('hex'))
(170, 187, 204)

for python3:
>>> struct.unpack('BBB', bytes.fromhex(str))

代码语言:javascript
复制
>>> rgb = (50,100,150)
>>> struct.pack('BBB',*rgb).encode('hex')
'326496'

for python3:
>>> bytes.hex(struct.pack('BBB',*rgb))
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2262100

复制
相关文章

相似问题

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