使用Imagekit,PIL或Pillow改变饱和度?

时间:2013-04-17 20:54:08

标签: python image python-imaging-library imagekit django-imagekit

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

3 个答案:

答案 0 :(得分:15)

您可能需要ImageEnhance.Color

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

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

这是0.5,1.0和2.0颜色的相同图像的示例: enter image description here enter image description here enter image description here

答案 1 :(得分:4)

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

greyscale = rgba_image.convert('L')

将它应用于我的忍者:

cute ninja greyscale cute ninja

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

答案 2 :(得分:3)

如果你正在使用django-imagekit,你可以使用捆绑的Adjust处理器:

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

在幕后,这将完全符合@abarnert recommended