diff --git a/filter.py b/filter.py index 4150df2..88085d3 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,38 @@ from PIL import Image import numpy as np -img = Image.open("img2.jpg") -arr = np.array(img) -a = len(arr) -a1 = len(arr[1]) -i = 0 -while i < a - 11: - j = 0 - while j < a1 - 11: - s = 0 - for n in range(i, i + 10): - for n1 in range(j, j + 10): - n1 = arr[n][n1][0] - n2 = arr[n][n1][1] - n3 = arr[n][n1][2] - M = n1 + n2 + n3 - s += M - s = int(s // 100) - for n in range(i, i + 10): - for n1 in range(j, j + 10): - arr[n][n1][0] = int(s // 50) * 50 - arr[n][n1][1] = int(s // 50) * 50 - arr[n][n1][2] = int(s // 50) * 50 - j = j + 10 - i = i + 10 -res = Image.fromarray(arr) -res.save('res.jpg') + + +def set_color(arr, i, j, cell_size, brightness, graduation): + value = int(brightness // graduation) * graduation + arr[i: i + cell_size, j: j + cell_size] = value + return arr + + +def get_avg_brightness(arr, i, j, cell_size): + result = 0 + interval = arr[i: i + cell_size, j: j + cell_size] + summa = np.sum(interval) + result = int(summa // 3 // (cell_size ** 2)) + return result + + +def filter(arr, cell_size, graduation): + width = len(arr) + height = len(arr[1]) + for i in range(0, width - cell_size + 1, cell_size): + for j in range(0, height - cell_size + 1, cell_size): + brightness = get_avg_brightness(arr, i, j, cell_size) + arr = set_color(arr, i, j, cell_size, brightness, graduation) + return arr + + +img_name = input("Введите название изображения: ") + ".jpg" +cell_size_data = int(input("Введите размер мозаики: ")) +graduation_data = int(input("Введите градацию: ")) +output = input("Введите название выходной картинки: ") + ".jpg" + +img = Image.open(img_name) +array = np.array(img) +array = filter(array, cell_size_data, graduation_data) +res = Image.fromarray(array) +res.save(output) \ No newline at end of file