
from PIL import Image, ImageDraw  # Подключим необходимые библиотеки.
"""
Различные фильтры, которые помогают улучшить входное изображение, можно отказаться от них, изучив встроенные в PIL.
Это самостоятельный исполняймый файл.

"""

mode = int(input('mode:'))  # Считываем номер преобразования.
#image = Image.open("perfectskan.png")  # Открываем изображение.
image = Image.open("autoletter.png")  # Открываем изображение.
draw = ImageDraw.Draw(image)  # Создаем инструмент для рисования.
width = image.size[0]  # Определяем ширину.
height = image.size[1]  # Определяем высоту.
pix = image.load()  # Выгружаем значения пикселей.

# print(1)
if (mode == 0):
    for i in range(width):
        for j in range(height):
            a = pix[i, j][0]
            b = pix[i, j][1]
            c = pix[i, j][2]
            S = (a + b + c) // 3
            draw.point((i, j), (S, S, S))
# print(image)
if (mode == 1):
    depth = int(input('depth:'))
    for i in range(width):
        for j in range(height):
            a = pix[i, j][0]
            b = pix[i, j][1]
            c = pix[i, j][2]
            S = (a + b + c) // 3
            a = S + depth * 2
            b = S + depth
            c = S
            if (a > 255):
                a = 255
            if (b > 255):
                b = 255
            if (c > 255):
                c = 255
            draw.point((i, j), (a, b, c))
if (mode == 2):
    for i in range(width):
        for j in range(height):
            a = pix[i, j][0]
            b = pix[i, j][1]
            c = pix[i, j][2]
            draw.point((i, j), (255 - a, 255 - b, 255 - c))

if (mode == 3):#Чёрно — белое изображение
    factor =170 #пока оптимально
    for i in range(width):
        for j in range(height):
            a = pix[i, j][0]
            b = pix[i, j][1]
            c = pix[i, j][2]
            S = a + b + c
            if (S > (((255 + factor) // 2) * 3)):
                a, b, c = 255, 255, 255
            else:
                a, b, c = 0, 0, 0
            draw.point((i, j), (a, b, c))


#image.save("ans.png", "PNG")
image.save("autoletter.png", "PNG")
# 200 212 212
del draw
