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