Подмодуль ImageEnhance
содержит ряд классов, которые можно использовать для регулировки яркости, контрастности, резкости и насыщенности изображения.
ImageEnhance.Color()
регулирует цветовой баланс (насыщенность) изображения,ImageEnhance.Contrast()
регулирует контрастность изображения,ImageEnhance.Brightness()
регулирует яркость изображения,ImageEnhance.Sharpness()
регулирует резкость изображения,ImageEnhance.Color(image)
:Класс ImageEnhance.Color()
регулирует цветовой баланс (насыщенность) изображения.
Этот класс можно использовать для настройки цветового баланса (насыщенности) изображения способом, аналогичным элементам управления в Photoshop.
Класс ImageEnhance.Color()
имеет один метод .enhance(factor)
, который возвращает улучшенное изображение. Аргумент factor
управляет улучшением изображения. Коэффициент 1.0 всегда возвращает копию исходного изображения. Меньшие коэффициенты означают меньшую насыщенность цветом, а более высокие значения - большую насыщенность.
Коэффициент усиления
factor
, равный 0,0, дает черно-белое изображение.
Пример регулировки насыщенности:
from PIL import ImageGrab, ImageEnhance import time # делаем задержку в 2 секунды на выбор # окна, для которого нужно сделать скриншот time.sleep(2) # создание скриншота img_tmp = ImageGrab.grab() # сохраним оригинал img_tmp.save('test-Color.jpg') for factor in [0, 0.5, 2]: ####################### # меняем насыщенность # ####################### img = ImageEnhance.Color(img_tmp).enhance(factor) # сохраним измененное изображение img.save(f'test-Color-{factor}.jpg')
ImageEnhance.Contrast(image)
:Класс ImageEnhance.Contrast()
регулирует контрастность изображения.
Класс ImageEnhance.Contrast()
имеет один метод .enhance(factor)
, который возвращает улучшенное изображение. Аргумент factor
управляет улучшением изображения. Коэффициент 1.0 всегда возвращает копию исходного изображения. Меньшие коэффициенты означают меньшую контрастность, а более высокие значения - большую контрастность.
Коэффициент усиления
factor
равный 0,0, дает дает сплошное серое изображение.
Пример регулировки контрастности:
from PIL import ImageGrab, ImageEnhance import time # делаем задержку в 2 секунды на выбор # окна, для которого нужно сделать скриншот time.sleep(2) # создание скриншота img_tmp = ImageGrab.grab() # сохраним оригинал img_tmp.save('test-Contrast.jpg') for factor in [0, 0.5, 2]: ####################### # меняем контрастность # ####################### img = ImageEnhance.Contrast(img_tmp).enhance(factor) # сохраним измененное изображение img.save(f'test-Contrast-{factor}.jpg')
ImageEnhance.Brightness(image)
:Метод ImageEnhance.Brightness()
регулирует яркость изображения.
Класс ImageEnhance.Brightness()
имеет один метод .enhance(factor)
, который возвращает улучшенное изображение. Аргумент factor
управляет улучшением изображения. Коэффициент 1.0 всегда возвращает копию исходного изображения. Меньшие коэффициенты означают меньшую яркость, а более высокие значения - большую яркость.
- Коэффициент усиления
factor
, равный 0,0, дает черное изображение.
Пример регулировки яркости:
from PIL import ImageGrab, ImageEnhance import time # делаем задержку в 2 секунды на выбор # окна, для которого нужно сделать скриншот time.sleep(2) # создание скриншота img_tmp = ImageGrab.grab() # сохраним оригинал img_tmp.save('test-Brightness.jpg') for factor in [0, 0.5, 2]: ###################### # меняем Яркость # ###################### img = ImageEnhance.Brightness(img_tmp).enhance(factor) # сохраним измененное изображение img.save(f'test-Brightness-{factor}.jpg')
ImageEnhance.Sharpness(image)
:Метод ImageEnhance.Sharpness()
регулирует резкость изображения.
Класс ImageEnhance.Sharpness()
имеет один метод .enhance(factor)
, который возвращает улучшенное изображение. Аргумент factor
управляет улучшением изображения. Коэффициент 1.0 всегда возвращает копию исходного изображения. Меньшие коэффициенты означают меньшую резкость (размытость), а более высокие значения - большую резкость.
- Коэффициент усиления
factor=0
дает размытое изображение- Коэффициент усиления
factor=2
дает четкое изображение.
Пример регулировки резкости:
from PIL import ImageGrab, ImageEnhance import time # делаем задержку в 2 секунды на выбор # окна, для которого нужно сделать скриншот time.sleep(2) # создание скриншота img_tmp = ImageGrab.grab() # сохраним оригинал img_tmp.save('test-Sharpness.jpg') for factor in [0, 0.5, 2]: ################### # меняем резкость # ################### img = ImageEnhance.Sharpness(img_tmp).enhance(factor) # сохраним измененное изображение img.save(f'test-Sharpness-{factor}.jpg')
В этом примере создается скриншот экрана и в цикле к оригиналу применяются изменения цветности, контрастности, яркости и резкости с разными настройками. Далее изображения объединяются в постер для сравнения.
from PIL import Image, ImageGrab, ImageEnhance import time # делаем задержку в 2 секунды на выбор # окна, для которого нужно сделать скриншот time.sleep(2) # создание скриншота img_tmp = ImageGrab.grab() # получим размеры w, h = img_tmp.size # уменьшим в 2 раза new_size = (w//2, h//2) img_tmp = img_tmp.resize(new_size) # имена классов модуля ImageEnhance, # которые улучщают изображение classes = ['Brightness', 'Color', 'Contrast', 'Sharpness'] for class_name in classes: # получаем объект класса в цикле по его имени obj = getattr(ImageEnhance, class_name) frames = [] for factor in [0.3, 1, 2]: # изменяем изображение с # текущим объектом класса img = obj(img_tmp).enhance(factor) # добавим измененное изображение в список frames.append(img) # объединим картинки из списка `frames`` # для этого создадим подложку `poster` size = (new_size[0], new_size[1] * 3) poster = Image.new(img_tmp.mode, size) for i, frame in enumerate(frames): # рассчитываем отступ по высоте h = new_size[1] * i # вставляем картинку в постер poster.paste(frame, (0, h)) # смотрим что получилось poster.save(f'test-{class_name}.jpg')