from PIL import ImageOps ImageOps.colorize(image, black, white, mid=None, blackpoint=0, whitepoint=255, midpoint=127)
image
- объект изображения для обработки. Изображение должно быть черно-белым в градациях серого. Обесцветить можно, изменив режим изображения на L
. Например, Image.convert('L')
. black
- цвет, который будет использоваться для черных входных пикселей.white
- цвет, который будет использоваться для белых входных пикселей.mid=None
- цвет, используемый для полутоновых (серых) входных пикселей.blackpoint=0
- значение int
в диапазоне [0, 255] для отображения черного цвета.whitepoint=255
- значение int
в диапазоне [0, 255] для отображения белого цвета.midpoint=127
- значение int
в диапазоне [0, 255] для отображения полутонов.Image
.Функция ImageOps.colorize()
модуля Pillow
раскрашивает/тонирует черно-белое изображение (должно быть в градациях серого). Например, на черно-белую фотографию можно наложить сепию (сделать фото под старину).
Эта функция вычисляет цветовой клин, который сопоставляет все черные пиксели исходного изображения с первым цветом black
, а все белые пиксели - со вторым цветом white
.
Если указан необязательный аргумент mid
, то получится трехцветное отображение. Аргументы black
и white
должны быть кортежами RGB
или строками цветовых хешей (например '#eeeeee').
Можно указать позиции отображения для любого из цветов (например, blackpoint
). Эти аргументы представляют собой целое значение, соответствующее месту, где должен быть отображен соответствующий цвет. Эти аргументы должны иметь логический порядок, такой, чтобы blackpoint <= whitepoint <= midpoint
(если указан аргумент mid
).
Грубо говоря про аргументы можно думать так:
black
,white
,mid
отвечают за новый цвет, который примет оттенокblackpoint=0
,whitepoint=255
иmidpoint=127
соответственно. Значения аргументаblack
будет распространяться отblackpoint=0
до значения 126, а значенияmid
будет распространяться ему навстречу отmidpoint=127
до значения 1 и они будут смешиваться. Значениеwhite
будет распространяться и отwhitepoint=255
до значения 128 иmid
также распространяется в сторонуwhite
, где они будут тоже смешиваться.
from PIL import ImageGrab, ImageOps import time # делаем задержку в 2 секунды на выбор # окна, для которого нужно сделать скриншот time.sleep(2) # создание скриншота img_tmp = ImageGrab.grab() # обесцвечиваем изображение с оттенками серого img_tmp = ImageOps.grayscale(img_tmp) # сохраним для сравнения img_tmp.save('test.jpg') # накладываем сепию black='#523224' - это значит, что # цвет '#523224' будет распространяться от `blackpoint=0` # до `whitepoint=254` постепенно ослабевая, т.к. ему на встречу # распространяется white='#ffffff' от `whitepoint=255` до значения 1 im = ImageOps.colorize(img_tmp, black='#523224', white='#ffffff') # сохраняем im.save('test_colorize-0.jpg') # изменим точку вхождения черного цвета blackpoint=80. # это значит, что палитра от 0 до 80 примет цвет #523224 # и останется без изменений im = ImageOps.colorize(img_tmp, black='#523224', white='#ffffff', blackpoint=80) # сохраняем im.save('test_colorize-1.jpg') # раскрасим картинку в 3 цвета im = ImageOps.colorize(img_tmp, black='#0000ff', white='#ffff00', mid='#ff0000') # сохраняем im.save('test_colorize-2.jpg')