ant*_*tam 5 python image imagekit python-imaging-library django-imagekit
如何使用PIL或Pillow更改图像的饱和度?我希望能够将该解决方案与django-imagekit包一起使用.我需要更改饱和度的原因是创建一种效果,当用户悬停黑白图像时,它会变为彩色.
aba*_*ert 17
你可能想要ImageEnhance.Color.
img = PIL.Image.open('bus.png')
converter = PIL.ImageEnhance.Color(img)
img2 = converter.enhance(0.5)
Run Code Online (Sandbox Code Playgroud)
这使得图像具有原始的"颜色"的一半.这与饱和度的一半不完全相同(因为饱和度的一半或两倍通常会下溢或溢出),但它可能是您实际上大多数时候想要的.正如文档所说,它就像电视上的"颜色"旋钮一样.
这是0.5,1.0和2.0颜色的相同图像的示例:

如果您想要灰度图像,只需将其转换为L(Luminance) 模式:
greyscale = rgba_image.convert('L')
Run Code Online (Sandbox Code Playgroud)
将其应用于我的忍者:

如果需要中间步骤,则需要将 RGB 值转换为 HLS 或 HSV,调整饱和度,然后再次将其转换回 RGB。您可以为此使用colorsys,或调整此numpy解决方案;我希望后者表现更好。
如果您使用 django-imagekit,则可以仅使用捆绑的Adjust处理器:
from imagekit.processors import Adjust
Adjust(color=0.5)
Run Code Online (Sandbox Code Playgroud)
在幕后,这将完全按照@abarnert 的 建议进行。