Skip to main content
 首页 » 编程设计

python PIL : shift the hue and saturation

2025年05月04日17落叶

在 GIMP 中,我可以轻松地改变色调和饱和度。例如下图是原图和色相-90、饱和度100后的最终效果。

我如何继续从 Python PIL 获得相同的结果?

原图

original picture

最终图片

final picture

请您参考如下方法:

您可以结合使用 colorsys 模块和 PIL 来完成它,但是速度有点慢。 colorsys 允许您将颜色空间更改为 HSV,在其中进行色调和饱和度修改是微不足道的。我将饱和度取 0.65 的幂来近似您的示例,它保留了 colorsys 所需的 0.0-1.0 范围,同时增加了中间值。

import colorsys 
from PIL import Image 
im = Image.open(filename) 
ld = im.load() 
width, height = im.size 
for y in range(height): 
    for x in range(width): 
        r,g,b = ld[x,y] 
        h,s,v = colorsys.rgb_to_hsv(r/255., g/255., b/255.) 
        h = (h + -90.0/360.0) % 1.0 
        s = s**0.65 
        r,g,b = colorsys.hsv_to_rgb(h, s, v) 
        ld[x,y] = (int(r * 255.9999), int(g * 255.9999), int(b * 255.9999))