diff --git a/build/fr/iutfbleau/sae/ConverterController.class b/build/fr/iutfbleau/sae/ConverterController.class
index 286a2d1..0ea386f 100644
Binary files a/build/fr/iutfbleau/sae/ConverterController.class and b/build/fr/iutfbleau/sae/ConverterController.class differ
diff --git a/build/fr/iutfbleau/sae/Convertisseur.class b/build/fr/iutfbleau/sae/Convertisseur.class
index 91b1b85..26dc2eb 100644
Binary files a/build/fr/iutfbleau/sae/Convertisseur.class and b/build/fr/iutfbleau/sae/Convertisseur.class differ
diff --git a/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class b/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class
index 7f8ddc5..af2a1ef 100644
Binary files a/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class and b/build/fr/iutfbleau/sae/vconverter/ConverterWindow.class differ
diff --git a/build/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.class b/build/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.class
index 51a9adb..892a660 100644
Binary files a/build/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.class and b/build/fr/iutfbleau/sae/vconverter/ImagePreviewPanel.class differ
diff --git a/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java b/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java
index 32acd2f..c2c1fe7 100644
--- a/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java
+++ b/src/fr/iutfbleau/sae/vconverter/ConverterWindow.java
@@ -106,12 +106,6 @@ public class ConverterWindow extends JFrame {
/**
* Met à jour l’affichage des tables de fréquences.
- *
- *
- * 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