This commit is contained in:
AlgaLaptop
2025-12-28 00:01:31 +01:00
parent 2dbef96484
commit 27ec290315
6 changed files with 47 additions and 18 deletions
Binary file not shown.
Binary file not shown.
@@ -106,12 +106,6 @@ public class ConverterWindow extends JFrame {
/**
* Met à jour laffichage des tables de fréquences.
*
* <p>
* Les fréquences sont déjà calculées avant lappel
* de cette méthode. La fenêtre se contente de demander
* au panneau dédié de rafraîchir son affichage.
* </p>
*/
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 laffichage des codes Huffman.
*
* <p>
* Cette méthode ne génère aucun code.
* Elle permet uniquement dafficher les codes
* qui ont été produits par la partie traitement.
* </p>
@@ -137,8 +130,7 @@ public class ConverterWindow extends JFrame {
*
* <p>
* Les codes canoniques sont transmis au panneau
* chargé de leur affichage. Aucune vérification
* ni transformation nest effectuée ici.
* chargé de leur affichage.
* </p>
*/
public void setCanonicalTable(Map<Integer, String> codesRouge,
@@ -2,7 +2,7 @@ package fr.iutfbleau.sae.vconverter;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import java.awt.*;
/**
* Le panneau daperçu de limage.
*
@@ -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);
}
}