diff --git a/filter.py b/filter.py index 4150df2..9dc3dfd 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,19 @@ 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 mosaic_to_gray(array, mosiac_size, gradation): + width = len(array) + height = len(array[1]) + for x in range(0, width, mosiac_size): + for y in range(0,height, mosiac_size): + pixel = array[x:x + mosiac_size, y:y + mosiac_size] + medium_color = (np.sum(pixel)/3) // (mosiac_size * mosiac_size) + + for i in range(x, x + mosiac_size): + for j in range(y, y + mosiac_size): + array[i][j].fill((medium_color // (gradation*10))*(gradation*10)) + return array + +img_name, result_name= input("Название изменяемого файла: "), input("Название результирующего файла: ") +mosiac_size, gradation = int(input("Размер мозаики: ")), int(input("Уровень градации: ")) +Image.fromarray(mosaic_to_gray(np.array(Image.open(img_name)), mosiac_size, gradation)).save(result_name) \ No newline at end of file diff --git a/res.jpg b/res.jpg index d8d97ff..2f358e7 100644 Binary files a/res.jpg and b/res.jpg differ