Как мне изменить насыщенность изображения с помощью PIL или Pillow? Предпочтительно, чтобы я мог использовать решение вместе с пакетом django-imagekit. Причина, по которой мне нужно изменить насыщенность, заключается в том, чтобы создать эффект, при котором, когда пользователь наводит курсор на черно-белое изображение, оно превращается в цветное.
Изменить насыщенность с помощью Imagekit, PIL или Pillow?
Ответы (3)
Если вы используете django-imagekit, вы можете просто использовать встроенный процессор Adjust
:
from imagekit.processors import Adjust
Adjust(color=0.5)
Под капотом это будет делать именно то, что @abarnert рекомендуется.
Вы, вероятно, хотите ImageEnhance.Color
.
img = PIL.Image.open('bus.png')
converter = PIL.ImageEnhance.Color(img)
img2 = converter.enhance(0.5)
Это дает изображение с половиной «цвета» оригинала. Это не совсем то же самое, что половинная насыщенность (потому что половинная или двойная насыщенность обычно приводит к недоливу или переполнению), но, вероятно, это то, что вам на самом деле нужно большую часть времени. Как говорится в документах, это работает как ручка «цвет» на телевизоре.
Вот пример одного и того же изображения с цветом 0,5, 1,0 и 2,0:
Если вам нужно изображение в оттенках серого, просто преобразуйте его в режим L
(яркость):
greyscale = rgba_image.convert('L')
Применив это к моему ниндзя:
Если вам нужны промежуточные шаги, вам нужно преобразовать значение RGB в HLS или HSV, отрегулировать насыщенность, а затем снова преобразовать его обратно в RGB. Для этого вы можете использовать colorsys или адаптировать это numpy
решение; Я ожидаю, что последний будет работать лучше.