From 6e29373d43f2a43de602ef834e8a40c19f40bd5d Mon Sep 17 00:00:00 2001
From: Kinadinova Dariya <dariya.kinadinova.etu@115p4.fil.univ-lille.fr>
Date: Wed, 27 Mar 2024 13:34:02 +0100
Subject: [PATCH] class Block: average_color

---
 projet/Block.py          | 13 +++++++++
 projet/Decouper_Image.py | 50 --------------------------------
 projet/color.py          | 61 ++++++++++++++++++++++++----------------
 3 files changed, 50 insertions(+), 74 deletions(-)

diff --git a/projet/Block.py b/projet/Block.py
index 4ee55d6..4c84600 100644
--- a/projet/Block.py
+++ b/projet/Block.py
@@ -5,6 +5,7 @@
 """
 
 from PIL import Image, ImageDraw
+from color.py import *
 
 class Block:
     def __init__(self, image):
@@ -17,6 +18,18 @@ class Block:
         """
         self.image = image
         self.width, self.height = image.size
+        
+    def average_color(self):
+        """à_remplacer_par_ce_que_fait_la_fonction
+
+        Précondition : 
+        Exemple(s) :
+        $$$ 
+
+        """
+        colors = liste_col(self.image, (0, 0), (self.width-1, self.height-1))
+        return avg_col(colors)
+        
 
     def is_uniform(self, coordinates: tuple()):
         """à_remplacer_par_ce_que_fait_la_fonction
diff --git a/projet/Decouper_Image.py b/projet/Decouper_Image.py
index a5ffdbd..5310319 100644
--- a/projet/Decouper_Image.py
+++ b/projet/Decouper_Image.py
@@ -25,57 +25,7 @@ def decouper(file: str) -> list[Image]:
     l  = [block_1, block_2, block_3, block_4]
     return l
 
-def avg_col(l:list) -> tuple():
-    """renvoie la couleur moyenne d'une liste de couleurs
 
-    Précondition : 
-    Exemple(s) :
-    $$$ avg_col([(236, 210, 111), (236, 210, 111), (236, 210, 111), (236, 210, 111)])
-    (236, 210, 111)
-
-    """
-    c1 = 0
-    c2 = 0
-    c3 = 0
-    for col in l:
-        c1 += col[0]
-        c2 += col[1]
-        c3 += col[2]
-    avg1 = c1 // len(l)
-    avg2 = c2 // len(l)
-    avg3 = c3 // len(l)
-    return (avg1, avg2, avg3)
-
-def list_col(im: Image, left_top: tuple(), right_bottom: tuple()) -> list[int]:
-    """à_remplacer_par_ce_que_fait_la_fonction
-
-    Précondition : 
-    Exemple(s) :
-    $$$ list_col(Image.open('calbuth.png'), (0,0), (1, 1))
-    [(236, 210, 111), (236, 210, 111), (236, 210, 111), (236, 210, 111)]
-    
-    """
-    x_min, y_min = left_top
-    x_max, y_max = right_bottom
-    return [im.getpixel((x, y)) for x in range(x_max+1) for y in range(y_max+1)]
-
-def is_col_close(color1: tuple(), color2: tuple()) -> bool:
-    """returns True if the distance between two colors is not more than 30,
-    returns False if the distance is more than 30
-
-    Précondition : 
-    Exemple(s) : 
-    $$$ is_col_close((230, 210, 210), (236, 210, 211))
-    True
-    $$$ is_col_close((66, 135, 245), (103, 179, 82))
-    False
-
-    """
-    if (abs(color1[0] - color2[0]) <= 30) and (abs(color1[1] - color2[1]) <= 30) and (abs(color1[2] - color2[2]) <= 30):
-        res = True
-    else:
-        res = False
-    return res
         
     
     
diff --git a/projet/color.py b/projet/color.py
index 7752dda..7856c9c 100644
--- a/projet/color.py
+++ b/projet/color.py
@@ -4,44 +4,57 @@
 from PIL import Image, ImageDraw
 
 # Color manipulation
-def avg_col(l:list[int]) -> list[int]:
-    """déterminer la couleur moyenne d'une liste de couleurs
+def avg_col(l:list) -> tuple():
+    """renvoie la couleur moyenne d'une liste de couleurs
 
     Précondition : 
     Exemple(s) :
-    $$$ 
+    $$$ avg_col([(236, 210, 111), (236, 210, 111), (236, 210, 111), (236, 210, 111)])
+    (236, 210, 111)
 
     """
-    n_col = len(l)
-    if n_col == 0:
-        return None
-    else:
-        c1 = 0
-        c2 = 0
-        c3 = 0
-        for i in l:
-            c1 = c1 + l[0]
-            c2 = c2 + l[1]
-            c3 = c3 + l[2]
-        avg1 = c1 / n_col
-        avg2 = c2 / n_col
-        avg3 = c3 / n_col
+    c1 = 0
+    c2 = 0
+    c3 = 0
+    for col in l:
+        c1 += col[0]
+        c2 += col[1]
+        c3 += col[2]
+    avg1 = c1 // len(l)
+    avg2 = c2 // len(l)
+    avg3 = c3 // len(l)
     return (avg1, avg2, avg3)
 
-def liste_col(im: Image, left_top: tuple(), right_bottom: tuple()) -> list[int]:
+def list_col(im: Image, left_top: tuple(), right_bottom: tuple()) -> list[int]:
     """à_remplacer_par_ce_que_fait_la_fonction
 
     Précondition : 
     Exemple(s) :
-    $$$ 
-
+    $$$ list_col(Image.open('calbuth.png'), (0,0), (1, 1))
+    [(236, 210, 111), (236, 210, 111), (236, 210, 111), (236, 210, 111)]
+    
     """
     x_min, y_min = left_top
     x_max, y_max = right_bottom
-    l = []
-    for i in range((x_max+1)*(y_max+1)):
-        l.append(im.getpixel((x, y) for x in range(x_max+1) for y in range(y_max+1)))
-    return l
+    return [im.getpixel((x, y)) for x in range(x_max+1) for y in range(y_max+1)]
+
+def is_col_close(color1: tuple(), color2: tuple()) -> bool:
+    """returns True if the distance between two colors is not more than 30,
+    returns False if the distance is more than 30
+
+    Précondition : 
+    Exemple(s) : 
+    $$$ is_col_close((230, 210, 210), (236, 210, 211))
+    True
+    $$$ is_col_close((66, 135, 245), (103, 179, 82))
+    False
+
+    """
+    if (abs(color1[0] - color2[0]) <= 30) and (abs(color1[1] - color2[1]) <= 30) and (abs(color1[2] - color2[2]) <= 30):
+        res = True
+    else:
+        res = False
+    return res
     
     
     
\ No newline at end of file
-- 
GitLab