11

如何使用 PIL 或 Pillow 更改图像的饱和度?最好我希望能够将该解决方案与 django-imagekit 包一起使用。我需要更改饱和度的原因是创建一种效果,当用户将黑白图像悬停时,它会变成彩色。

4

3 回答 3

26

你可能想要ImageEnhance.Color.

img = PIL.Image.open('bus.png')
converter = PIL.ImageEnhance.Color(img)
img2 = converter.enhance(0.5)

这给出了具有原始“颜色”一半的图像。这与饱和度的一半并不完全相同(因为饱和度的一半或两倍通常会下溢或溢出),但这可能是您大部分时间真正想要的。正如文档所说,它就像电视上的“颜色”旋钮一样工作。

这是 0.5、1.0 和 2.0 颜色的同一图像的示例: 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

于 2013-04-17T21:10:46.117 回答
6

如果您想要灰度图像,只需将其转换为L(亮度)模式:

greyscale = rgba_image.convert('L')

将其应用于我的忍者:

可爱的忍者 灰度可爱忍者

如果需要中间步骤,则需要将 RGB 值转换为 HLS 或 HSV,调整饱和度,然后再将其转换回 RGB。您可以为此使用colorsys,或调整numpy解决方案;我希望后者表现更好。

于 2013-04-17T21:05:22.740 回答
4

如果您使用的是 django-imagekit,则可以只使用捆绑的Adjust处理器:

from imagekit.processors import Adjust
Adjust(color=0.5)

在幕后,这将完全符合@abarnert 的 建议

于 2013-06-28T18:08:33.140 回答