diff --git a/filter.py b/filter.py index 4150df2..0726026 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,28 @@ 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 pixel_brightness(arr, p_w, p_h, gr, i, j): + brightness = np.sum(arr[i: i + p_h, j: j + p_w]) // (p_h * p_w * 3) + brightness -= brightness % gr + return brightness + + +def transform_to_mosaic(arr, p_w, p_h, gr): + for i in range(0, len(arr), p_w): + for j in range(0, len(arr[1]), p_h): + brightness = pixel_brightness(arr, p_w, p_h, gr, i, j) + arr[i: i + p_h, j: j + p_w] = np.full(3, brightness) + + + +file_name = input("Введите имя файла который хотите преобразовать в мозаику: ") +res_name = input("Введите имя файла в который будет записан результат преобразования: ") +dimensions = [int(i) for i in input("Введите через запятую ширину и высоту одного элемента мозаики: ").split(',')] +gray_gradation = int(input("Введите число градаций серого: ")) +img = Image.open(file_name) +img_arr = np.array(img) +transform_to_mosaic(img_arr, dimensions[0], dimensions[1], gray_gradation) +res = Image.fromarray(img_arr) +print("Преобразование завершено... Результат записан в файл: \"" + res_name + "\"") +res.save(res_name) \ No newline at end of file diff --git a/res.jpg b/res.jpg index d8d97ff..8c7761a 100644 Binary files a/res.jpg and b/res.jpg differ