From e8a40152fb7a378776f3c85ebf46ba639d998e2d Mon Sep 17 00:00:00 2001 From: 1shaman1 <79924068+1shaman1@users.noreply.github.com> Date: Tue, 9 Nov 2021 20:27:08 +0500 Subject: [PATCH 1/5] Add files via upload --- filter.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/filter.py b/filter.py index 4150df2..ea5171a 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 + r1 = int(arr[n][n1][0]) + r2 = int(arr[n][n1][1]) + r3 = int(arr[n][n1][2]) + M = int(r1 + r2 + r3) // 3 s += M s = int(s // 100) for n in range(i, i + 10): From 5ac5101e501e156f6d1b960239052524d807edbf Mon Sep 17 00:00:00 2001 From: 1shaman1 <79924068+1shaman1@users.noreply.github.com> Date: Tue, 9 Nov 2021 21:05:39 +0500 Subject: [PATCH 2/5] =?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 | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/filter.py b/filter.py index ea5171a..c3243a5 100644 --- a/filter.py +++ b/filter.py @@ -2,19 +2,23 @@ import numpy as np img = Image.open("img2.jpg") arr = np.array(img) -a = len(arr) -a1 = len(arr[1]) +width = len(arr) +height = len(arr[1]) i = 0 -while i < a: +while i < width: j = 0 - while j < a1: + while j < height: s = 0 for n in range(i, i + 10): + if n >= width: + break for n1 in range(j, j + 10): - r1 = int(arr[n][n1][0]) - r2 = int(arr[n][n1][1]) - r3 = int(arr[n][n1][2]) - M = int(r1 + r2 + r3) // 3 + if n1 >= height: + break + r = int(arr[n][n1][0]) + g = int(arr[n][n1][1]) + b = int(arr[n][n1][2]) + M = int(r + g + b) // 3 s += M s = int(s // 100) for n in range(i, i + 10): From 586df423eedc2ae062b854c458faa1264f1e2a3b Mon Sep 17 00:00:00 2001 From: 1shaman1 <79924068+1shaman1@users.noreply.github.com> Date: Wed, 10 Nov 2021 21:51:31 +0500 Subject: [PATCH 3/5] Add files via upload --- filter.py | 68 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/filter.py b/filter.py index c3243a5..0faa4f8 100644 --- a/filter.py +++ b/filter.py @@ -1,32 +1,48 @@ from PIL import Image import numpy as np + +def scale_middle_brightness(arr, i, j, pixel_size, width, height): + middle_brightness = 0 + for n in range(i, i + pixel_size): + if n >= width: + break + for n1 in range(j, j + pixel_size): + if n1 >= height: + break + r = int(arr[n][n1][0]) + g = int(arr[n][n1][1]) + b = int(arr[n][n1][2]) + brightness = int(r + g + b) // 3 + middle_brightness += brightness + return int(middle_brightness // (pixel_size ** 2)) + +def refactor_pixels(arr, i, j, middle_brightness, step, pixel_size, width, height): + for n in range(i, i + pixel_size): + if n >= width: + break + for n1 in range(j, j + pixel_size): + if n1 >= height: + break + arr[n][n1][0] = int(middle_brightness // step) * step + arr[n][n1][1] = int(middle_brightness // step) * step + arr[n][n1][2] = int(middle_brightness // step) * step + +def pixelation(arr, step, pixel_size): + width = len(arr) + height = len(arr[1]) + i = 0 + while i < width: + j = 0 + while j < height: + middle_brightness = scale_middle_brightness(arr, i, j, pixel_size, width, height) + refactor_pixels(arr, i, j, middle_brightness, step, pixel_size, width, height) + j = j + pixel_size + i = i + pixel_size + img = Image.open("img2.jpg") arr = np.array(img) -width = len(arr) -height = len(arr[1]) -i = 0 -while i < width: - j = 0 - while j < height: - s = 0 - for n in range(i, i + 10): - if n >= width: - break - for n1 in range(j, j + 10): - if n1 >= height: - break - r = int(arr[n][n1][0]) - g = int(arr[n][n1][1]) - b = int(arr[n][n1][2]) - M = int(r + g + b) // 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 + +pixelation(arr, 50, 12) + res = Image.fromarray(arr) res.save('res.jpg') From 5a8df8ec0d295351ba9180b19e2077f8ecdfbb79 Mon Sep 17 00:00:00 2001 From: 1shaman1 <79924068+1shaman1@users.noreply.github.com> Date: Sat, 13 Nov 2021 18:43:52 +0500 Subject: [PATCH 4/5] Add files via upload --- filter.py | 56 ++++++++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/filter.py b/filter.py index 0faa4f8..ec456cd 100644 --- a/filter.py +++ b/filter.py @@ -1,48 +1,24 @@ from PIL import Image import numpy as np -def scale_middle_brightness(arr, i, j, pixel_size, width, height): - middle_brightness = 0 - for n in range(i, i + pixel_size): - if n >= width: - break - for n1 in range(j, j + pixel_size): - if n1 >= height: - break - r = int(arr[n][n1][0]) - g = int(arr[n][n1][1]) - b = int(arr[n][n1][2]) - brightness = int(r + g + b) // 3 - middle_brightness += brightness - return int(middle_brightness // (pixel_size ** 2)) -def refactor_pixels(arr, i, j, middle_brightness, step, pixel_size, width, height): - for n in range(i, i + pixel_size): - if n >= width: - break - for n1 in range(j, j + pixel_size): - if n1 >= height: - break - arr[n][n1][0] = int(middle_brightness // step) * step - arr[n][n1][1] = int(middle_brightness // step) * step - arr[n][n1][2] = int(middle_brightness // step) * step +def refactor_pixels(pixels, i, j, step, pixel_size): + middle_brightness = int(int(np.sum(pixels[i:i + pixel_size, j:j + pixel_size])) // 3 // (pixel_size ** 2)) + pixels[i: i + pixel_size, j: j + pixel_size] = int(middle_brightness // step) * step -def pixelation(arr, step, pixel_size): - width = len(arr) - height = len(arr[1]) - i = 0 - while i < width: - j = 0 - while j < height: - middle_brightness = scale_middle_brightness(arr, i, j, pixel_size, width, height) - refactor_pixels(arr, i, j, middle_brightness, step, pixel_size, width, height) - j = j + pixel_size - i = i + pixel_size +def pixelation(pixels, step, pixel_size): + width = len(pixels) + height = len(pixels[1]) + pixels = pixels[:width // pixel_size * pixel_size, :height // pixel_size * pixel_size] + width = len(pixels) + height = len(pixels[1]) + for i in range(0, width - pixel_size + 1, pixel_size): + for j in range(0, height - pixel_size + 1, pixel_size): + refactor_pixels(pixels, i, j, step, pixel_size) + return pixels img = Image.open("img2.jpg") -arr = np.array(img) - -pixelation(arr, 50, 12) - -res = Image.fromarray(arr) +pixels = np.array(img) +res = Image.fromarray(pixelation(pixels, 50, 20)) res.save('res.jpg') + From ecc878f9cf53a0705dadee6fa6b77f8d99fef6be Mon Sep 17 00:00:00 2001 From: 1shaman1 <79924068+1shaman1@users.noreply.github.com> Date: Sat, 13 Nov 2021 19:22:06 +0500 Subject: [PATCH 5/5] =?UTF-8?q?=D0=AD=D1=82=D0=B0=D0=BF=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/filter.py b/filter.py index ec456cd..b518788 100644 --- a/filter.py +++ b/filter.py @@ -17,8 +17,8 @@ def pixelation(pixels, step, pixel_size): refactor_pixels(pixels, i, j, step, pixel_size) return pixels -img = Image.open("img2.jpg") +img = Image.open(input('Имя входной фотографии: ')) pixels = np.array(img) -res = Image.fromarray(pixelation(pixels, 50, 20)) -res.save('res.jpg') +res = Image.fromarray(pixelation(pixels, int(input("Глубина цвета: ")), int(input("Размер мозаики: ")))) +res.save(input('Имя обработарнной фотографии: '))