You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何读取PPT形状的RGB格式颜色?当前输出为十六进制

解决幻灯片形状RGB颜色显示格式问题

嘿,我懂你遇到的困扰——明明想获取RGB数值,结果输出的却是一串十六进制字符串对吧?其实这是因为shape.fill.fore_color.rgb返回的是RGBColor对象,直接打印它的时候就会默认显示成十六进制格式。要拿到咱们熟悉的(红, 绿, 蓝)整数元组,操作起来很简单~

修改后的代码你可以直接用:

for shape in slide_3.shapes:
    if shape.name[:9] == 'Rectangle':
        # 提取填充色的RGB分量
        fill_rgb = shape.fill.fore_color.rgb
        fill_r, fill_g, fill_b = fill_rgb.r, fill_rgb.g, fill_rgb.b
        # 提取线条色的RGB分量
        line_rgb = shape.line.color.rgb
        line_r, line_g, line_b = line_rgb.r, line_rgb.g, line_rgb.b
        
        print(f"填充色RGB: ({fill_r}, {fill_g}, {fill_b}) | 线条色RGB: ({line_r}, {line_g}, {line_b})")

还有个更简便的小技巧:

RGBColor对象支持直接转换成元组,一行代码就能搞定标准RGB格式:

fill_rgb_tuple = tuple(shape.fill.fore_color.rgb)
line_rgb_tuple = tuple(shape.line.color.rgb)
print(fill_rgb_tuple, line_rgb_tuple)

这样输出的就是(114, 249, 30) (0, 0, 0)这种你想要的结果啦。

要是你好奇手动转十六进制字符串的方法(虽然没必要,但可以了解下):

比如拿输出的72F91E举例:

hex_str = "72F91E"
r = int(hex_str[:2], 16)
g = int(hex_str[2:4], 16)
b = int(hex_str[4:], 16)
print((r, g, b))  # 结果就是(114, 249, 30)

内容的提问来源于stack exchange,提问作者Kathiravan Saimoorthy

火山引擎 最新活动