From db4b17f4f70af8a7e67e1c6c46e9c8a84c5a5757 Mon Sep 17 00:00:00 2001 From: Polina Kipriyanova <93437990+2Pirozhochek7@users.noreply.github.com> Date: Sun, 21 Nov 2021 21:49:45 +0500 Subject: [PATCH 1/4] =?UTF-8?q?1=20=D1=8D=D1=82=D0=B0=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/filter.py b/filter.py index 4150df2..a06f2f2 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 к in range(j, j + 10): + n1 = arr[n][к][0] + n2 = arr[n][к][1] + n3 = arr[n][к][2] + M = (int(n1) + int(n2) + int(n3)) / 3 s += M s = int(s // 100) for n in range(i, i + 10): From 3174a952bdecf9d9bb0432a59492a9b5eac75e6a Mon Sep 17 00:00:00 2001 From: Polina Kipriyanova <93437990+2Pirozhochek7@users.noreply.github.com> Date: Sun, 21 Nov 2021 22:01:16 +0500 Subject: [PATCH 2/4] =?UTF-8?q?2=20=D1=8D=D1=82=D0=B0=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 60 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/filter.py b/filter.py index a06f2f2..d64a466 100644 --- a/filter.py +++ b/filter.py @@ -1,28 +1,36 @@ 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: - j = 0 - while j < a1: - s = 0 - for n in range(i, i + 10): - for к in range(j, j + 10): - n1 = arr[n][к][0] - n2 = arr[n][к][1] - n3 = arr[n][к][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 e87ed0128b4c6c7f070b06c3333e72a924feae9a Mon Sep 17 00:00:00 2001 From: Polina Kipriyanova <93437990+2Pirozhochek7@users.noreply.github.com> Date: Sun, 21 Nov 2021 22:09:07 +0500 Subject: [PATCH 3/4] =?UTF-8?q?3=20=D1=8D=D1=82=D0=B0=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 42 ++++++++++++++---------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/filter.py b/filter.py index d64a466..bfa791d 100644 --- a/filter.py +++ b/filter.py @@ -4,33 +4,19 @@ 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]) + self.size = pix_size + self.grad = 255 // gradation + self.width = len(self.image) + self.height = 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_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_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') +orig_img = Image.open("img2.jpg") +result = GreyImage(orig_img, pix_size=int(input()), gradation=int(input())).get_grey_image() +result.save('res.jpg') \ No newline at end of file From cf0e1bb6832c040659889e01662cd71d19fdcfe3 Mon Sep 17 00:00:00 2001 From: Polina Kipriyanova <93437990+2Pirozhochek7@users.noreply.github.com> Date: Sun, 21 Nov 2021 22:19:04 +0500 Subject: [PATCH 4/4] =?UTF-8?q?4=20=D1=8D=D1=82=D0=B0=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/filter.py b/filter.py index bfa791d..096e0b5 100644 --- a/filter.py +++ b/filter.py @@ -17,6 +17,22 @@ def get_grey_image(self): 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") -result = GreyImage(orig_img, pix_size=int(input()), gradation=int(input())).get_grey_image() -result.save('res.jpg') \ No newline at end of file +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' \ No newline at end of file