From 1f971f3f03949bae0beb0f09f981e512d55e14da Mon Sep 17 00:00:00 2001
From: Melissa Belkacemi <melissa.belkacemi.etu@univ-lille.fr>
Date: Mon, 1 Apr 2024 19:32:33 +0200
Subject: [PATCH] Update file decoupe.py

---
 PJ/decoupe.py | 78 ++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 64 insertions(+), 14 deletions(-)

diff --git a/PJ/decoupe.py b/PJ/decoupe.py
index 80b6991..099c12b 100644
--- a/PJ/decoupe.py
+++ b/PJ/decoupe.py
@@ -1,6 +1,10 @@
-from PIL import Image, ImageDraw
+# Belkacemi Melissa
+# 01/03/2024
 from bloc import *
 from couleur import *
+from PIL import Image, ImageDraw
+
+
 
 
 def decoupe(image:Image,p_hg,p_bd,n:int)->Bloc:
@@ -12,16 +16,16 @@ def decoupe(image:Image,p_hg,p_bd,n:int)->Bloc:
      
     if n >0:
         b1,b2,b3,b4=quatre_blocs(image,hg,bd)
-        decoupe(b1,n-1,b1.pixel_hg,b1.pixel_bd)
-        decoupe(b2,n-1,b2.pixel_hg,b2.pixel_bd)
-        decoupe(b3,n-1,b3.pixel_hg,b3.pixel_bd)
-        decoupe(b4,n-1,b4.pixel_hg,b4.pixel_bd)
+        decoupe(image,b1.pixel_hg,b1.pixel_bd,n-1)
+        decoupe(image,b2.pixel_hg,b2.pixel_bd,n-1)
+        decoupe(image,b3.pixel_hg,b3.pixel_bd,n-1)
+        decoupe(image,b4.pixel_hg,b4.pixel_bd,n-1)
         if b1.sont_proches(b2,b3,b4):
             return(Bloc(couleur_moyenne([b1.couleur,b2.couleur,b3.couleur,b4.couleur]),b1.pixel_hg,b4.pixel_bd))
         else:
             return(Bloc((0,0,0),b1.pixel_hg,b4.pixel_bd,b1,b2,b3,b4))
     else:
-        couleurs=[im_rgb.getpixel((i,j)) for i in range(p_hg[0],1+p_bd[0]) for j in range(p_hg[1],1+p_bd[1])]
+        couleurs=[image.getpixel((i,j)) for i in range(p_hg[0],1+p_bd[0]) for j in range(p_hg[1],1+p_bd[1])]
         coul_moyenne=couleur_moyenne(couleurs)
         return Bloc(coul_moyenne,p_hg,p_bd)
         
@@ -47,13 +51,59 @@ def quatre_blocs(im:Image,hg:tuple[int,int],bd:tuple[int,int])->tuple[Bloc,Bloc,
     couleurs3=[im.getpixel((i,j)) for i in range(pixel_hg3[0],1+pixel_bd3[0]) for j in range(pixel_hg3[1],1+pixel_bd3[1])]
     couleurs4=[im.getpixel((i,j)) for i in range(pixel_hg4[0],1+pixel_bd4[0]) for j in range(pixel_hg4[1],1+pixel_bd4[1])]
     return (Bloc(couleur_moyenne(couleurs1),pixel_hg1,pixel_bd1),Bloc(couleur_moyenne(couleurs2),pixel_hg2,pixel_bd2),Bloc(couleur_moyenne(couleurs3),pixel_hg3,pixel_bd3),Bloc(couleur_moyenne(couleurs4),pixel_hg4,pixel_bd4))
-  
+
+def ouvre_image(image:str):
+    """ouvre et convertit en formay RGB l'image prise en paramètres
+
+    Précondition : le chemin vers l'image est correct 
+
+    """
+    img= Image.open(image)
+    img.convert('RGB')
+    return img
+    
+def dessine_blocs(dessin,bloc:Bloc):
+    """dessine le bloc dans l'image
+
+    Précondition : 
+    
+
+    """
+    
+    if len(bloc.sous_blocs)==0:
+        dessin.rectangle((bloc.pixel_hg,bloc.pixel_bd),fill = bloc.couleur)
+    else :
+        for elem in bloc.sous_blocs:
+            dessine_blocs(elem)
+    
+def dessine(img,bloc:Bloc):
+    """associe à un bloc une image bitmap le représentant
+
+    Précondition : l'image est ouverte 
+    """
+    dessin = ImageDraw.Draw(img)
+    dessine_blocs(dessin,bloc)
+    
+
+
+if __name__ == "__main__":
+    import sys
+    if len(sys.argv) != 4:
+        print("usage: decoupe.py operation image ordre")
+    else:
+        operation, image, ordre= sys.argv[1:]
+        if operation in {"affiche", "enregistre"}:
+            ordre = int(ordre)
+            im_rgb=ouvre_image(image)
+            t=im_rgb.size
+            hg=(0,0)
+            bd=(t[0]-1,t[1]-1)
+            b=decoupe(im_rgb,hg,bd,ordre)
+            dessin=dessine(im_rgb,b)
+            
+            if operation == "affiche":
+                im_rgb.show()
+            else:
+                im_rgb.save("images/img_rec.png", "PNG")
 
 
-im = Image.open('images/calbuth.png')
-t=im.size
-hg=(0,0)
-bd=(t[0]-1,t[1]-1)
-im_rgb = im.convert('RGB')
-b=decoupe(im_rgb,hg,bd,1)
-b.sous_blocs
-- 
GitLab