From 31464396cb5c796b4b54d2704924391d1ab7bca0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?SAEZ=20Th=C3=A9o?= <theo.saez@etu.univ-amu.fr>
Date: Thu, 22 May 2025 17:08:04 +0200
Subject: [PATCH] =?UTF-8?q?Correction=20du=20fait=20qu'on=20ne=20prenait?=
 =?UTF-8?q?=20pas=20l'image=20en=20enti=C3=A8ret=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../8.3/executionHistory/executionHistory.bin | Bin 83514 -> 83514 bytes
 .../executionHistory/executionHistory.lock    | Bin 17 -> 17 bytes
 .gradle/8.3/fileHashes/fileHashes.bin         | Bin 20997 -> 20997 bytes
 .gradle/8.3/fileHashes/fileHashes.lock        | Bin 17 -> 17 bytes
 .../8.3/fileHashes/resourceHashesCache.bin    | Bin 22815 -> 22883 bytes
 .../buildOutputCleanup.lock                   | Bin 17 -> 17 bytes
 build/classes/java/main/Pixelate.class        | Bin 1403 -> 1510 bytes
 .../stash-dir/Pixelate.class.uniqueId1        | Bin 1349 -> 1528 bytes
 .../compileJava/previous-compilation-data.bin | Bin 17378 -> 17378 bytes
 src/main/java/Pixelate.java                   |  52 +++++++++++-------
 10 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/.gradle/8.3/executionHistory/executionHistory.bin b/.gradle/8.3/executionHistory/executionHistory.bin
index 4f6382c184eabecbd335e26486b281b4cf4daf71..244d3109b31719f69a55fb44afa9fbad59362eca 100644
GIT binary patch
delta 209
zcmdnh!@8@7bwgd6Qn7hqX>NIbR!&lSg>hnXer{fssYz04Qf4Xx1XOJ<^w`Y5Ik+r>
zP2jF{o@<iwyMoWxw^Rf^zw>PK?iwCOfqf!fyI)-{-Q0d8?TqvO&2OgHI5AG1-0+8G
zGXDql$y4iM*}J|iJo4VCaq_GWDw}2NMHnS^*Z+MZcD6sk?(OopvbvLd|9k~0c*Z^1
zvq4YbV&Hwb=Wluo^1keFKD2w)=IQq(88>aVi7#RlSvWOg<*xqFmHWI-C{N=Jk(%>u
M;gQYzo2m~30K8mfKL7v#

delta 209
zcmdnh!@8@7bwgd6Qf6Xqp-EL~UT#uqYDQv(S$b)TSyo<les(DX1XOP>^w`Y5Ik+r>
zO(4>2fytd|aam#~MO(N3I<j%|?iwCOfynHaWtvu+^RFt}ob_A8-ZH($iE;AehCeKm
z`9G*no>~{nzJ1#D!|#n6C(rtzvRSrXgi&Hn-8o;?k_oL$VR>@3_onNv1uOW?HQBR4
zPvCg@v){5Z7th{#^)|>=qd9l_eM!bmn{DEY7)9n~DAjJ#>g=k!F}Ze?=@q&C)2<)h
JyuYdXFaU<bT^|4d

diff --git a/.gradle/8.3/executionHistory/executionHistory.lock b/.gradle/8.3/executionHistory/executionHistory.lock
index 62a6a9ee70cd6c52c2fa0a3291187888fb50fd26..f0a0d548fa2bf5167779ba4ef2fc08db563d52e6 100644
GIT binary patch
literal 17
VcmZRc&c3jTfo*#$0~j#M0{|tv11A6g

literal 17
VcmZRc&c3jTfo*#$0~jz$0stko10eta

diff --git a/.gradle/8.3/fileHashes/fileHashes.bin b/.gradle/8.3/fileHashes/fileHashes.bin
index 51f71e9c932e0ab839e3009fc85e46e1dc2cc507..1bcd3d2077c1c745b28195521923b4bb7832d4bb 100644
GIT binary patch
delta 147
zcmZo&!q~cmal;``=8kHv%||`m7!?*y%~-jsKXm0juM^7CctfNZ7#OGh=%|)q00ZYo
zll#5ZHwStDWDQy+8}Qw6?uFdv@4NHl(yhcGDvMu&6*91AF)%Rb88a|2XfiM`D1xxS
i?)txP#Lo67*u7mIS5|j&FGNSxABYatXOrg!W&i+uUo&n1

delta 147
zcmZo&!q~cmal;``=F-#Vn~!?BF)GZ<P^#Ue)!9{dV{+{((<^ce42;u$l%BR{00ZYo
zll#5ZHwStDWDQD)mH2pn4r8_U@sy3_E-}*~D)*#=6*92gWME*>GiG35&}3j>Py}It
hId$iJRZAwcGKJ;I)!v(~3(;{}7ovl;dh*=B3;=j+Fo6I7

diff --git a/.gradle/8.3/fileHashes/fileHashes.lock b/.gradle/8.3/fileHashes/fileHashes.lock
index 202e6a3ec2fc70ea7aa5e103dde72d55685e1238..fa57a03fd30a91dc84e7572cba89fd2e222b895a 100644
GIT binary patch
literal 17
UcmZQ}DxDd5Cpapd0SuTW04+oVxBvhE

literal 17
UcmZQ}DxDd5Cpapd0SuVg04*{DrT_o{

diff --git a/.gradle/8.3/fileHashes/resourceHashesCache.bin b/.gradle/8.3/fileHashes/resourceHashesCache.bin
index d8cea3c56d8fd758d5b408f209f4e99393965978..44f5a53db1d6bfa04daa25726b67cb602041a434 100644
GIT binary patch
delta 144
zcmbQgiSh9!#tkMCjE$2`B_;^;F7N&~b;UDB1~7<}-@I2MgIVB0Mdj-D^~FEHf(((4
zn`LFVIGA`eH!A)R-)QiGd$Xg*JpmVE1_lO61_lN}5Ed}rtq}LH%i@x${qZ$@%8L37
c3=DFpD(*_>xh5&UEBJhUOGV)GJI_EW02;e22><{9

delta 41
ycmaF7iE;iW#tkMCjP;XEB_?dXE0MswIaG#;gNgg+M#UfE8x0hAHamLU6952A7!ND}

diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index db8fe93b84f4de9132047ab34768545b54d91dec..c67e44d64627719f90d37dff9e3057564156780d 100644
GIT binary patch
literal 17
VcmZQBYW6ihyz1y71~6d!4*)g^1#tiX

literal 17
VcmZQBYW6ihyz1y71~6d!3;;F#1!VvL

diff --git a/build/classes/java/main/Pixelate.class b/build/classes/java/main/Pixelate.class
index 729b874dccdc98ae4e426dd1f85f1616d6b58c6f..041c4854ceb226e3b5bcf70910786b772c7b871d 100644
GIT binary patch
delta 1121
zcmey(^^AK$3NJSU9|J!-g8&bMAcN4vPWgI11`!?xQ3fGK2F~=<5|7l(^o$ZN1`Y;s
z9tH^pNk#^q#In?)#Pn3>{G9wEMg|!TANQifO3&QH^i*q4Pft%xFdr;y&BY+iAj8fe
z%fleYAkWCamz7wSsGpOVm#*)dSdziWz?_?z$H>5{;pwUA337-c4+FCjgYv{b3LJb4
zsyqy84C<3r7&W*x8MN3Lw0RhG7<4CxGb*XGGw3ri@H$nNq=M`Q+r`D8$6(0Az{+66
z$iSlEq8Y}{U^4j-W04wT79#^=CL;qo)ZL5>+(<5DWMHghWMHhA?8hYG%vzqA0&*5x
z2H4k(47|Z5iOJc%i3K5vNja&E3~a?EiA5z5Fh(RJ19Nd{E+Ye@3nK$-a(-!E$>haM
zYU0KWj0{2y+zdPn3=GT+j0~&{rVNY>W|JQ<N!Ob*Ffi~jFf%YPurshQa4>K(a57jh
zFffQQFflMNa4}diSTTSA7g#?d10#bqgAGVG0|R3u0~-S;0|P^w_D%*~Mh08$oeaW^
z40g<BETSwjix>)-%~(ZQWfw8TXlaYGh_cGaZetL$ViRRCV;5x?WzpKgz@AVqvx7lu
z5re)cs~LwVhbSvpP!=pEsx8ST$}Y;WlR<%np@oBS`TvJ4?2OC*ABU<kV_p7#3Dg)f
zmgWEZH-fzf@{kz=F9QPuF9SOR9|IqQAcHuA5Q74P2!k$zID;dD1Vbo;Bts&D1VcJQ
zy*NWIgAhX{gCIjIgB;lBF$|mxt_(^HwhTNB91MmGHVk$QJPhm%x(p5s_6!aTYz$Hi
z@eGa(pvV<uC}D77;9+0^g#tXR+8CS}To@P`*cs{>Tp4&6m>BpNDj3`tco>)&+!+`c
zlo>ewF$gj;GX7zx=V1KHAjZz1$@qssnDG~b;!g(FUku#87`PdjK<OJA(&h}T4BQM1
z3|V}ZY|LgHGG?5joHF3B5@i7gmZhv2mnfGkM2HnEq#(hjEy^j%wUa@GnPDe`1|vhV
zC0h#zV+$AK^8eRbI2o7!-z!?rF^hqnZ#e^}1e+*Fd%h*-ZU((b3C`^d1{>g^sl~v>
zz`&r&z|5e=z{a4#AjzP~pu?cW;J~2G;LM=O;K`uD;Lo7XkicL74!{BiZUz|!U2p($
zF>o@tfddefP_p1blm!i<ECz-w1`lu;fmoj4Faoha;RXuTEO5B7GB7iwGk7t0Gq5qR
zF{Ci~fa4~Cfs4VO!JB~-9IB!WZ2uTInL(i{#Q2Lr=NAJjhbt(#`!X;vFfsT60II#U
ADF6Tf

delta 1066
zcmaFH{hMn-iYhw;A0q>=Q)Nl2dr@MgbAC>K5f=k512Z>+AcGJ)gD?++2!rUvLiu_@
z25}w+2?kL{2F~=<5|7l(^o$ZN1`Y-(9tLR!8Ab-4#In?)#Pn3K5sVB{8a^NcJ#!P&
zQ>{HcHNiZvoHfX3IUWXi1_ee2j^fmkfXs^297YBKhz^JvPfyJ-kUAwE24w~nMh3yj
zwv4LWY7FY^3>rKPnhaW#a~YL9*&G-kfQvzoL7$z$fQP}5!HAK8FDtPuQ9ma!FJ0d^
zu_S|$fw>^RoRNW5!^K6@1>`*w9tKthQ$_|B4HwNYb_Vmw+Zc<a*ozBG6N^%f7#W}}
zLq-P1EJg;#%*lRC61E(9spVkDF*0x?`G%2!H@GA*Iomg}AS5v<CzX+bv4W9-v67L2
z9U3Bx42&+5S2C&9n=vplFfnj5@GvkiFf%YRurgRMFfv#&Ffh0=FflMOFfedwZD(NA
zlHSU|zL9}}fr-J2fq{XKfti7Uft`VcfrEjQfs?_Sfq_8`qME^m!4@0<Twqff85kMt
z80;ZtGFmdQGO#l+Ff{CD;EmkQ!0%hnY$vO|lR<!yL2C;Gd&(k)OlC6{Q5Nl;3}SF0
zA1!TJQI>5ClD^DltfH(Sg^L)pna$Wl*&u95Z5>%r)&x-&QMQDg46-Z?Eo_X-|37JA
zWnBLMk|+yEQGyxE^8c%3!A!g5|NB5*VP>#msApg>0{fkpfrEjcL6Sj$L5D$*!IVLW
z!I43j!IwdVA(layA(=slA(KIXp_GB2p`Jkk>|YNCb_N#)c?Jgt9tJiB3kE|5M+Q(7
z$}mJSI5F@rurP2jlrlIo@PNar0Uj<53@!|=42%pM3>6G+^$hL|Obi|j3=E149Df<O
z*csFq|1bzL{$Y@2{KLS__=`dA7X#}r2JT-BoD7VhR1FD9hEEJ^3>*v$43T`6EJ#6N
z%xuOk$`118A_heX7Ht_(wgg#G_Jo}bip&f<8B`e=k}X+U*cq4qzXJ}W`co3%@M#xe
z(B8qIn{UYiiWv!(?F_~nz$pS0+e%=Yq#2kQWEuDw<QSwG<Qa?^<QOa&WEt!klo|XP
zRN)~a#GnrLJv##%gC*GaY#>*{eIE(+Jp)4|gC_%zIXKZoGI)W5iJ2jc!JEN{fdw2Q
Zf($Hw8Q7Si;h^@5ft7)g!55qc{QzqZu~+~A

diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Pixelate.class.uniqueId1
index 656924cc69183fd4d1c9f81a7bfd80f59a0b065c..2d0790e45beaf22ef523f964d26380d011468fc2 100644
GIT binary patch
delta 1151
zcmX@g^@E%1)W2Q(7#J8F8T==5Me%Yo@G<bSGYIf72r>vw?3AzPV-VqC5M>ZzWZ+Cs
zE%8XrOwTCcV&Gs9=V6dwkYr@wNi0h(N=#36&d<p&Vq}of@Nq9ntn|!HOi#7;^z`)9
z1oOeN)?5tI3^MEtvOElO4DyT&d|8QQiTXK-dFlGTi6t3~49vNid5jFK8lIk-o*;)P
z@-Q$fF(^;`qrkz(pvuFb#-Kh~g;9fBlR=A}L7Rs`he3C8IHQs}JA*zW1FutMNh-*0
zuw7gXdJKj<46F=Bj0`LqE}CKN3?`EgF&1gD7Z;W$7Nr_7GC)~|j125hKQJ<IBe{06
zHIsrfYk6i0$Z2dDV4pKG@CKJ8CTII57K9`w<)kt)uoagi7L`Q67?F$&%*Ca-j0}t}
zj0~*F`K5U!lV>og85=V&GB7c4Gw?7lFfcPPGO#k3GB7fjF)%Q=F)%SOF)%Q2X>Dg<
z)RNxHz`l`zfq{v^eDX&o;d%=O1_m*RJcA{J6$1!xfz4rLU}Ugnuz{Gu7|+1Qz{$YC
z(4)PRftQiNR(mIdFe8H<vl)vhi_9X1a%MADQC8VS3`ttrqAa4UGP2tk#H`pvS<Ki)
z*+p5jwlJ_K$n0Q{TEt)~%4)_T$|1@M7ORH{N^489iL!{YCy26&awP0zP+(zb;b2_;
z|8@%t<MRIpp^D8|m;av!HO!1<`TtIkN0=GR85kJM7<d^N7<d`j8Tc6Z7z7!_8H5-V
z7(^I!8N?YJ86+4&86+9f86+5T8N?Zi8H5<>83Y-+8Dts2{*PhcWN>BBV6bK2Vc=je
zWN>1zW8h(6XV7JEW3Xp%U|?gAVn}6hWB^6CAVU>{69W$e3n(n$A=bm-%;3Vn$iU9f
z%HYbt!@$JA$56-M#=yhC%;3(zz@W^)@sB}}k&*Ea0|(<@1~GO9O~yYA!i>M_8PtC=
zu>NA;{>8w}zz9n5(C{{AU}fNDU|`7Nvt(m7<B&1q6y=lw2bm}fI2<iy&A3FlWRZmw
zB-pe?IYqg4GN>>!>}1ejWJtDTYvEvQ;bL6=|5^(t<MRJ|MLA|Mu=6cv;FMq!<!H~Z
zx8&T-pcg5@xt+ma132k`LQ{)@i-Cbbm4TT-je(6pgF%u(lR<|;i@||Go57hulfjcg
zgTbFcpCN(4kO7o{3K+N<WEgb8LBz$t$>0VKB2aS4f(KC+G>8}&vKTzTK?GvOc!I+S
z!~}&KC{(k+;l|3q%#hCD#o*1r#=ypq!r%jrn*;_f273l?22OCOiZZbMW8h>4g{lza
TF9w}o46Gckpv3PBPT+n3nWDh0

delta 1070
zcmeyteUyvq)W2Q(7#J8F8T=-4MX9ng@G&y*I#rgWx)&u@I_Kx)7jZH0GB9&92r>w<
zGYIoAh%kswER?SoWDw_JkYEsHWZ+CsE%8XrOwTCcV&Gtq;$e_xkYQxtNi0h(N=#1$
z8^OpRrQriI&@(qNJ=NONQxnVs%UOermg8ZNXHZ~d;3!Tl3COHS&0%B^farjz@$}RT
z1F2KuVNhmJVPp`TY|E(1t;V3v&Y;1=pvj;$IhRq%lg)tv0=O9T81&g040sp}8H^Yi
z__7kq67_Qu^V0Qw6H77}8JG+5%NZG1HC$XYT|nM5;bCB9FlA(5(QwfWV`ng*yp6G_
zo~^jBG_fd^k%2Lbk%2Ljk%2W6<a$O1Zm{DaUSVY5$V)8;I}#=V=2$Z_@CKJ8CTII5
z7K9`w<$#Q-U}RvdWMp86h72PEqYEPgS8#r5QF5wVCP)b{*zbuYsd`z7lP@rF*PAgg
zGB7c4Gw?7lFfcPPGO#jOFfcM$GB7Z>F)%SOF)%Q2X>Dg<)RNxHz`l`zfq{v^ih+TF
zkAazifq|WYg@J>ClYx`Lnt_2q45FIBhQSsbMqFT185tNE>=^7JW-{_IurjbQFfiop
zX5fw7&cN?m&uk~Fy^}$JkwI$<1AEFMhHz#x7Eu=MoeW}dAuBCySy7g443fUgW~`#D
zAccz<B(-&9MOhO>SwvYAb~4DaFto5TF8}{Tlm#T6V8*ii{~lQ|({B0y1t5nrgB`BL
zz{SA8z{|kFz|SDbAiz+s!yw3D${@tx$RNxR$RNZJ&LF^$%)rl(%ODQ+l^p{cg9U>;
zg98I724xuB85|jS7+4s%7?K&B7<j<pkO%j39)mN33j-qq2SXZzD>ww*85kI(7})+Y
zaIrI}G5%o?Wc<S*&G?H!?iU01F9yzf21Zb7h6E48Ck8eK4h9B>NIpvzW-~TXHjob%
zF&HzOv5T@p*oqP?+A^YS39_Q>2|F1SnHhF6s4_AnTe7sUGcNysr-hAi`TtWA;8186
zVbI>epqp>W0t#&jmhBA28^Ey)ia{l?MN;()%nULN{0y=T(hPD8#tgCymJBis_6$l4
z{tPPM0PtX7XAojg2YZ{HfsMfu>}^maM#8-v3H3GuLnMO-0}nVML^61SgNK<RjKPb+
kn}LM^6cmCCEPol;m>K^ta5Mg5Q2PZ6R7M6LaKiEh09eGer~m)}

diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin
index 64db03ff04a968e653af2394d4508cf16be25b92..54eb85396719eedc02338d65a0696205902c1cdc 100644
GIT binary patch
delta 45
zcmaFV&iJUEaYHbp!0!6LZ^X{_C)mAR9#>X(a_{71#!Z||3}UQI>|ES}o8_2}I069F
C9uZyu

delta 45
zcmaFV&iJUEaYHbpz?`~szN#e?TA9M~<ZACt*PWcqxQUaIfsKisi(61^vmDbAM*xXd
B4y6D9

diff --git a/src/main/java/Pixelate.java b/src/main/java/Pixelate.java
index 3c22ae5..713b50b 100644
--- a/src/main/java/Pixelate.java
+++ b/src/main/java/Pixelate.java
@@ -2,39 +2,51 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class Pixelate implements transform {
-    private int newPixelSize;
+    private final int newPixelSize;
 
     public Pixelate(int newPixelSize) {
         this.newPixelSize = newPixelSize;
     }
 
+    @Override
     public void applyTo(GrayImage image) {
-
-        GrayColor newColor = new ByteGrayColor();
-
-        for (int i = 0; i < image.getWidth() - this.newPixelSize; i += this.newPixelSize) {
-            for (int j = 0; j < image.getHeight() - this.newPixelSize; j += this.newPixelSize) {
-                newColor = averageColor(image, i, j);
-                for (int square1 = 0; square1 < this.newPixelSize; square1++)
-                    for (int square2 = 0; square2 < this.newPixelSize; square2++)
-                        image.setPixel(newColor, i+square1, j+square2);
-
-            }   
+        int width = image.getWidth();
+        int height = image.getHeight();
+
+        // On parcourt l’image par blocs de taille newPixelSize
+        for (int x = 0; x < width; x += newPixelSize) {
+            for (int y = 0; y < height; y += newPixelSize) {
+                // Calcul de la couleur moyenne pour le bloc courant
+                GrayColor average = averageColor(image, x, y, width, height);
+
+                // Application de la couleur moyenne à tous les pixels du bloc
+                for (int i = x; i < Math.min(x + newPixelSize, width); i++) {
+                    for (int j = y; j < Math.min(y + newPixelSize, height); j++) {
+                        image.setPixel(average, i, j);
+                    }
+                }
+            }
         }
     }
 
-    public GrayColor averageColor(GrayImage image, int x, int y) {
-        double average = 0;
-
-        for (int i = 0; i < this.newPixelSize; i++) {
-            for (int j = 0; j < this.newPixelSize; j++) {
-                average += image.getPixelGrayColor(x + i, y + j).getLuminosity();
+    /**
+     * Calcule la couleur moyenne d’un bloc de taille newPixelSize à partir de la position (startX, startY).
+     * On s’assure de ne pas dépasser les bords de l’image.
+     */
+    private GrayColor averageColor(GrayImage image, int startX, int startY, int width, int height) {
+        double sum = 0.0;
+        int count = 0;
+
+        for (int i = startX; i < Math.min(startX + newPixelSize, width); i++) {
+            for (int j = startY; j < Math.min(startY + newPixelSize, height); j++) {
+                sum += image.getPixelGrayColor(i, j).getLuminosity();
+                count++;
             }
         }
 
-        average /= Math.pow(this.newPixelSize, 2);
-
+        double average = (count == 0) ? 0.0 : sum / count; // average = sun / count sauf si count = 0, dans ce cas average = 0 (enlève erreur DivisionByZero)
         return new ByteGrayColor(average);
     }
 }
 
+
-- 
GitLab