如何读取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




