diff --git a/filter.py b/filter.py index 4150df2..25622c0 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,34 @@ 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 get_pixel(i, j): + sum = np.sum(arr[i:i + pxSize, j: j + pxSize]) / 3 + return int(sum // (pxSize * pxSize)) + + +def set_grey_pixels(colorSum, i, j): + arr[i:i + pxSize, j:j + pxSize, 0] = int(colorSum // gradation) * gradation + arr[i:i + pxSize, j:j + pxSize, 1] = int(colorSum // gradation) * gradation + arr[i:i + pxSize, j:j + pxSize, 2] = int(colorSum // gradation) * gradation +def img2pixel(original, result): + global arr + global gradation + global pxSize + img = Image.open(original) + arr = np.array(img) + height = len(arr) + width = len(arr[1]) + i = 0 + + gradation = int(input('Введите градацию серого: ')) + pxSize = int(input('Введите размер мазайки: ')) + while i < height: + j = 0 + while j < width: + s = get_pixel(i, j) + set_grey_pixels(s, i, j) + j = j + pxSize + i = i + pxSize + res = Image.fromarray(arr) + res.save(result) + +img2pixel(input("Название оригинала: "), input("Название копии: ")) \ No newline at end of file diff --git a/res.jpg b/res.jpg index d8d97ff..6267e78 100644 Binary files a/res.jpg and b/res.jpg differ