From 0e6edfe1d5ee44a7d46d4a488706527cd2166802 Mon Sep 17 00:00:00 2001 From: Lilya <73344383+KingsWoman@users.noreply.github.com> Date: Sun, 14 Nov 2021 18:00:20 +0300 Subject: [PATCH 1/4] Step_1 --- filter.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/filter.py b/filter.py index 4150df2..4cea1c5 100644 --- a/filter.py +++ b/filter.py @@ -5,16 +5,16 @@ a = len(arr) a1 = len(arr[1]) i = 0 -while i < a - 11: +while i < a: j = 0 - while j < a1 - 11: + while j < a1: 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 + for k in range(j, j + 10): + n1 = arr[n][k][0] + n2 = arr[n][k][1] + n3 = arr[n][k][2] + M = (int(n1) + int(n2) + int(n3)) / 3 s += M s = int(s // 100) for n in range(i, i + 10): From c450479c70e21f4766e75ab62543a24a6f3fc2df Mon Sep 17 00:00:00 2001 From: Lilya <73344383+KingsWoman@users.noreply.github.com> Date: Sun, 14 Nov 2021 18:11:21 +0300 Subject: [PATCH 2/4] Step_2 --- filter.py | 60 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/filter.py b/filter.py index 4cea1c5..9597eca 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,36 @@ from PIL import Image +from numpy import * 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: - j = 0 - while j < a1: - s = 0 - for n in range(i, i + 10): - for k in range(j, j + 10): - n1 = arr[n][k][0] - n2 = arr[n][k][1] - n3 = arr[n][k][2] - M = (int(n1) + int(n2) + int(n3)) / 3 - 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') +class GreyImage: + def __init__(self, pix_array, pix_size=10, gradation=5): + self.image = np.array(pix_array) + self.size = pix_size + self.gradation = 255 // gradation + self.height = len(self.image) + self.width = len(self.image[0]) + + def get_grey_image(self): + for px in range(0, self.width, self.size): + for y in range(0, self.height, self.size): + self.get_grey_color(color=self.get_middle_color(px, y), px=px, y=y) + return Image.fromarray(self.image) + + def get_middle_color(self, px, y): + color = 0 + for column in range(px, px + self.size): + for row in range(y, y + self.size): + color += sum([int(self.image[column][row][i]) for i in range(3)]) + return int(color / 3 // (self.size ** 2)) + + def get_grey_color(self, color, px, y): + for column in range( + px, px + self.size): + for row in range(y, y + self.size): + self.image[column][row][0] = int(color // self.gradation) * self.gradation + self.image[column][row][1] = int(color // self.gradation) * self.gradation + self.image[column][row][2] = int(color // self.gradation) * self.gradation + + +orig_image = Image.open("img2.jpg") +result = GreyImage(pix_array=orig_image, pix_size=int(input()), gradation=int(input())).get_grey_image() +result.save('res.jpg') From eeacefb51c5538f907eaf714a3f03c1446f625a3 Mon Sep 17 00:00:00 2001 From: Lilya <73344383+KingsWoman@users.noreply.github.com> Date: Sun, 14 Nov 2021 18:13:22 +0300 Subject: [PATCH 3/4] Step_3 --- filter.py | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/filter.py b/filter.py index 9597eca..f294ab1 100644 --- a/filter.py +++ b/filter.py @@ -1,36 +1,25 @@ -from PIL import Image -from numpy import * import numpy as np +from PIL import Image + + class GreyImage: def __init__(self, pix_array, pix_size=10, gradation=5): self.image = np.array(pix_array) - self.size = pix_size - self.gradation = 255 // gradation - self.height = len(self.image) - self.width = len(self.image[0]) - - def get_grey_image(self): - for px in range(0, self.width, self.size): - for y in range(0, self.height, self.size): - self.get_grey_color(color=self.get_middle_color(px, y), px=px, y=y) - return Image.fromarray(self.image) + self.size = pix_size + self.grad = 255 // gradation + self.width = len(self.image) + self.height = len(self.image[0]) - def get_middle_color(self, px, y): - color = 0 - for column in range(px, px + self.size): - for row in range(y, y + self.size): - color += sum([int(self.image[column][row][i]) for i in range(3)]) - return int(color / 3 // (self.size ** 2)) + def get_grey_image(self): + for x in range(0, self.width, self.size): + for y in range(0, self.height, self.size): + self.image[x:x + self.size, y:y + self.size] = self.get_middle_color(x, y) + return Image.fromarray(self.image) + def get_middle_color(self, x, y): + return int(self.image[x:x + self.size, y:y + self.size].sum() / 3 // self.size ** 2 // self.grad * self.grad) - def get_grey_color(self, color, px, y): - for column in range( - px, px + self.size): - for row in range(y, y + self.size): - self.image[column][row][0] = int(color // self.gradation) * self.gradation - self.image[column][row][1] = int(color // self.gradation) * self.gradation - self.image[column][row][2] = int(color // self.gradation) * self.gradation -orig_image = Image.open("img2.jpg") -result = GreyImage(pix_array=orig_image, pix_size=int(input()), gradation=int(input())).get_grey_image() -result.save('res.jpg') +orig_img = Image.open("img2.jpg") +arr = GreyImage(orig_img, pix_size=int(input()), gradation=int(input())).get_grey_image() +arr.save('res.jpg') From a9283d38225918a0e6c8c1399a5e99968e2d7d98 Mon Sep 17 00:00:00 2001 From: Lilya <73344383+KingsWoman@users.noreply.github.com> Date: Sun, 14 Nov 2021 18:13:40 +0300 Subject: [PATCH 4/4] Step_4 --- filter.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/filter.py b/filter.py index f294ab1..53bb9da 100644 --- a/filter.py +++ b/filter.py @@ -1,25 +1,35 @@ import numpy as np from PIL import Image - - class GreyImage: def __init__(self, pix_array, pix_size=10, gradation=5): self.image = np.array(pix_array) - self.size = pix_size + self.size = pix_size self.grad = 255 // gradation self.width = len(self.image) self.height = len(self.image[0]) - - def get_grey_image(self): + def get_grey_image(self): for x in range(0, self.width, self.size): - for y in range(0, self.height, self.size): + for y in range(0, self.height, self.size): self.image[x:x + self.size, y:y + self.size] = self.get_middle_color(x, y) - return Image.fromarray(self.image) + return Image.fromarray(self.image) def get_middle_color(self, x, y): return int(self.image[x:x + self.size, y:y + self.size].sum() / 3 // self.size ** 2 // self.grad * self.grad) - - - -orig_img = Image.open("img2.jpg") -arr = GreyImage(orig_img, pix_size=int(input()), gradation=int(input())).get_grey_image() -arr.save('res.jpg') +flag = 'no' +while flag == 'no': + print('Введите название картинки') + orig_img = Image.open('{}'.format(input())) + print('Выберите величину ячейки, на которую будут делить изображение\n' + + 'Размер должен быть инициализирован целым положительным числом') + pic_size = int(input()) + print('Выберите количество оттенков\n' + + 'Количество должно быть инициализировано целым положительным числом') + grad = int(input()) + arr = GreyImage(orig_img, pix_size=pic_size, gradation=grad).get_grey_image() + print('Введите название новой картинки') + name = input() + print('Введите формат новой картинки(jpg, png и т.д.)') + formt = input() + arr.save('{}.{}'.format(name, formt)) + print('Если хотите завершить сессию, наберите \'yes\', если нет-нажмите enter') + if input() == 'yes': + flag = 'yes'