correction ayoub et controleur conv
This commit is contained in:
@@ -1,24 +1,80 @@
|
||||
package fr.iutfbleau.sae;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.*;
|
||||
import javax.imageio.ImageIO;
|
||||
import fr.iutfbleau.sae.mhuffman.CanonicalCode;
|
||||
import fr.iutfbleau.sae.mhuffman.FrequencyTable;
|
||||
import fr.iutfbleau.sae.mimage.Pixel;
|
||||
import fr.iutfbleau.sae.mimage.RGBImage;
|
||||
import fr.iutfbleau.sae.vconverter.ConverterWindow;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
/**
|
||||
* Contrôleur pour la conversion d'images.
|
||||
* <p>
|
||||
* Cette classe gère le chargement des fichiers image et les opérations
|
||||
* de conversion associées. tel que
|
||||
* </p>
|
||||
*
|
||||
*/
|
||||
public class ConverterController {
|
||||
// Image convertie en RGBImage
|
||||
private RGBImage image;
|
||||
|
||||
public BufferedImage loadImage(File f){
|
||||
//verification si le fichier contient quelque chose, si il est exesistant et si c'est un fichier "normal" d'apres la javadoc.
|
||||
if (f == null || !f.exists() || !f.isFile()) {
|
||||
return null;
|
||||
// Table de fréquences pour chaque composante
|
||||
private FrequencyTable frequencyTable;
|
||||
|
||||
// Arbres de Huffman pour chaque composante
|
||||
private Map<Integer, String> abrHuffmanR;
|
||||
private Map<Integer, String> abrHuffmanG;
|
||||
private Map<Integer, String> abrHuffmanB;
|
||||
|
||||
// Codes canoniques pour chaque composante
|
||||
private CanonicalCode canonRED;
|
||||
private CanonicalCode canonGREEN;
|
||||
private CanonicalCode canonBLUE;
|
||||
|
||||
// La fenêtre du convertisseur
|
||||
private ConverterWindow fen;
|
||||
|
||||
public ConverterController(ConverterWindow fen) {
|
||||
this.fen = fen;
|
||||
}
|
||||
|
||||
|
||||
// charger une image depuis un fichier avec bufferedImage et la convertir en RGBImage
|
||||
public void loadImage(String filepath) {
|
||||
File FI = new File(filepath);
|
||||
try{
|
||||
// Lire l'image avec BufferedImage
|
||||
BufferedImage buffimage = ImageIO.read(FI);
|
||||
if (buffimage == null) {
|
||||
throw new IllegalArgumentException("Le fichier spécifié n'est pas une image valide.");
|
||||
}
|
||||
|
||||
int w = buffimage.getWidth();
|
||||
int h = buffimage.getHeight();
|
||||
|
||||
// Créer une RGBImage de la même taille
|
||||
this.image = new RGBImage(w, h);
|
||||
// remplir la RGBImage avec les pixels de BufferedImage
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
int rgb = buffimage.getRGB(x, y); // obtenir la valeur RGB du pixel
|
||||
// Extraire les composantes R, G, B
|
||||
int r = (rgb >> 16) & 0xFF;
|
||||
int g = (rgb >> 8) & 0xFF;
|
||||
int b = rgb & 0xFF;
|
||||
// Créer un pixel et l'ajouter à la RGBImage
|
||||
this.image.setPixel(x, y, new Pixel(r, g, b));
|
||||
}
|
||||
}
|
||||
|
||||
// Mettre à jour le GUI
|
||||
this.fen.setImagePreview(buffimage);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
BufferedImage image;
|
||||
try {
|
||||
image = ImageIO.read(f);
|
||||
} catch (IOException e){
|
||||
return null;
|
||||
}
|
||||
return image;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user