From 27ec290315cc79b72f51ba9d84ac64b149dc6d02 Mon Sep 17 00:00:00 2001 From: AlgaLaptop Date: Sun, 28 Dec 2025 00:01:31 +0100 Subject: [PATCH] image ok --- .../iutfbleau/sae/ConverterController.class | Bin 1960 -> 1960 bytes build/fr/iutfbleau/sae/Convertisseur.class | Bin 1391 -> 1391 bytes .../sae/vconverter/ConverterWindow.class | Bin 3387 -> 3387 bytes .../sae/vconverter/ImagePreviewPanel.class | Bin 806 -> 1498 bytes .../sae/vconverter/ConverterWindow.java | 10 +--- .../sae/vconverter/ImagePreviewPanel.java | 55 +++++++++++++++--- 6 files changed, 47 insertions(+), 18 deletions(-) diff --git a/build/fr/iutfbleau/sae/ConverterController.class b/build/fr/iutfbleau/sae/ConverterController.class index 286a2d19d9983a11a55b39a69874f22e18e41426..0ea386fc7226e50946aad3e36d3e4c9e9da86a67 100644 GIT binary patch delta 17 ZcmZ3%zk;9R)W2Q(7#J8_HgYUr2LL|?23r6C delta 17 ZcmZ3%zk;9R)W2Q(7#J8FH*zds2LL|z23P<9 diff --git a/build/fr/iutfbleau/sae/Convertisseur.class b/build/fr/iutfbleau/sae/Convertisseur.class index 91b1b85f2df5aa08d80017f26d236da8f957dbcb..26dc2ebc8d1171e26ddfb28db0e80d193e324146 100644 GIT binary patch delta 17 ZcmaFQ^`494)W2Q(7#J8_Hgcr10suzb2BZK0 delta 17 ZcmaFQ^`494)W2Q(7#J8FH*%!20suzM2B81| diff --git a/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class b/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class index 7f8ddc5565b8341c522221c308750be4cc32a85a..af2a1ef9b0c21e832f6febcc2144b298b92d003e 100644 GIT binary patch delta 17 ZcmdljwOfkg)W2Q(7#J8_HgXvA0sukW1~32s delta 17 ZcmdljwOfkg)W2Q(7#J8FH*y&B0sukH1}y*p diff --git a/build/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.class b/build/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.class index 51a9adb142272ca02bbccca5e67e90d6d239f883..892a6600e0390d98b20fee753496ff8b7f1ecbd0 100644 GIT binary patch literal 1498 zcmX^0Z`VEs1_l>~AT98vY8lIk-VO$Kn41DYi z{5%W-41$adx@krFnWZIZNja&BrTWE*srqHf`FUljMJ1_4`kuLo>8Sxlsb!g|BLhczYDsuzN=XJd z5IsRwsPZtVfuuOoQ%gKjGt)ClxEM4T6xkUx85v~Y-o)ZSkTO*+1|0@nb_P8j27Lwt zMg~5xhMdH_bba4Mur0Znd7y}JanW>PXE0)95C*FNMH$SAMlPHTCJd(R3}!qG<_s2$ z4B~JlL8*BusYRK2=^mMRCB=*kg5Iu?@t%Gmu0a9*K8_)t{(g)MvWQSbRj%TlT4@b3 z+KPw4n!$#VK_<-6C)5>Hf4q~YkEfrjV-O>Q5X2y`Ad6v-&CkhQ0$rzgY& zP+&pAA1vdaRGeB=mRe-38O6xJ;+&t7%E-X)lbM(5SDKrYS`?C)l#|NHz)_r90#?q* zponBP#2nOwrWwY_z#CkWn4ImKSOC_}&fv|+APA2JSWGc8a0Ta=7A2>;WrC~_1DlVW zTl7F$7#Vmx^YT)QoO2S3i&Kl)83Gs?q(Ktk{DK)yj10`)sg(?h47?0X3=9m63{0SG z!oa}5%)kgL4Hy_1Tp1V`yct*-7#SEC)U~!VFly~)V2>1JRuE*=+0MYZje!SUKxiY_ zC^rTM1|bF(1_lNZ1{MZU22lnv1~mq821W*V1`nvgS`18Ji@CJ4w=#%oZDWu`=;dQz zW?*2DW?*HIVc=wtV_*SgJ%~O=CI)r}UIqq+ZY}NY3^H0<7(|aVux!-Y#-L!UwT(f= z4kWUTLEVf6!q75fm1!4cY0sB!7iDeF-@%}5$tJ*YU}aEc0A+Aq1}z3525km$20aD^27Lxi1|tS51`7s921^DP23rPS z20Ml@21kZC1}BCz1{a1L23Ll11}}y#25$yW1_lOE1}5JB3}y`M>MPGjQ=Ra5L~sEHdI^&CE?qPi16~^O?Mm zQAXaHi-CiIkB5PufsK)Yy(qOHF*C1(i-CzjkcUBtL3pw?qmCj6gD4M!7=t(?14nvl zNqA;TNd_YWvxcT87lR~&C_97HXJ%D}F*je!@ThmV1ofq_ASft5j$fs;X+ zfrUY+o - * Les fréquences sont déjà calculées avant l’appel - * de cette méthode. La fenêtre se contente de demander - * au panneau dédié de rafraîchir son affichage. - *

*/ public void setFrequencyTable(int[] freqR,int[] freqG,int[] freqB) { frequencyTablePanel.updateFrequencies(freqR,freqG,freqB); @@ -121,7 +115,6 @@ public class ConverterWindow extends JFrame { * Met à jour l’affichage des codes Huffman. * *

- * Cette méthode ne génère aucun code. * Elle permet uniquement d’afficher les codes * qui ont été produits par la partie traitement. *

@@ -137,8 +130,7 @@ public class ConverterWindow extends JFrame { * *

* Les codes canoniques sont transmis au panneau - * chargé de leur affichage. Aucune vérification - * ni transformation n’est effectuée ici. + * chargé de leur affichage. *

*/ public void setCanonicalTable(Map codesRouge, diff --git a/src/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.java b/src/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.java index c72ea0d..79f05c8 100644 --- a/src/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.java +++ b/src/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.java @@ -2,7 +2,7 @@ package fr.iutfbleau.sae.vconverter; import java.awt.image.BufferedImage; import javax.swing.JPanel; - +import java.awt.*; /** * Le panneau d’aperçu de l’image. * @@ -16,10 +16,13 @@ public class ImagePreviewPanel extends JPanel { private BufferedImage image; + // je donne une taille préférée au panel public ImagePreviewPanel() { - // constructeur vide pour l'instant + this.setPreferredSize(new Dimension(800, 300)); + this.setMinimumSize(new Dimension(800, 300)); } + public void setImage(BufferedImage img) { this.image = img; repaint(); @@ -27,13 +30,47 @@ public class ImagePreviewPanel extends JPanel { } @Override - protected void paintComponent(java.awt.Graphics g) { - super.paintComponent(g); - if (image != null) { - // Dessiner l'image centrée dans le panneau - int x = (getWidth() - image.getWidth()) / 2; - int y = (getHeight() - image.getHeight()) / 2; - g.drawImage(image, x, y, this); + protected void paintComponent(Graphics pinceau) { + // Appel de la méthode parente pour effacer l'arrière-plan + super.paintComponent(pinceau); + + if (image == null) { + return; } + + // Recuperer les dimensions du panel pour centrer l'image + int panelWidth = this.getWidth(); + int panelHeight = this.getHeight(); + + // Recuperer les dimensions de l'image + int imgWidth = image.getWidth(); + int imgHeight = image.getHeight(); + + // Je calcule le facteur du reduction (si l'image est trop grande) en gros le dezoom + double scale = Math.min( + (double) panelWidth / imgWidth, + (double) panelHeight / imgHeight + ); + + // Si l'image est plus petite que le panel, on ne la redimensionne pas donc scale = 1 + if (scale > 1.0) { + scale = 1.0; + } + + // je recalcule les dimensions de l'image à dessiner + int drawWidth = (int) (imgWidth * scale); + int drawHeight = (int) (imgHeight * scale); + + // Centrage de l'image dans le panel + int x = (panelWidth - drawWidth) / 2; + int y = (panelHeight - drawHeight) / 2; + + Graphics2D pinceau2D = (Graphics2D) pinceau; + pinceau2D.setRenderingHint( + RenderingHints.KEY_INTERPOLATION, + RenderingHints.VALUE_INTERPOLATION_BILINEAR + ); + + pinceau2D.drawImage(image, x, y, drawWidth, drawHeight, this); } } \ No newline at end of file