Convertir une image en nuance de gris

Dans cet exemple, voyons comment transformer une photo en couleur en nuance de gris avec JAVA. L'image est au format PNG et représente ma nouvelle voiture: une bugatti Veyron -;)
Plusieurs méthodes sont possibles en JAVA (ColorConvertOp, GrayFilter et Graphics ). Cet exemple utilise les fonctions suivantes pour redessiner les photos:
- ImageIO.read: charger l'image en couleur,
- BufferedImage: créer une image tampon grisée,
- drawImage: dessiner la photo sur le tampon,
- ImageIO.write: enregistrer l'image en noir et blanc.


  bugatti_veyron    bugatti_veyron_gray

La class ImageGrayScal: redessiner la Bugatti Veyron en noir et blanc
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;

/**
 * Convertir une image en nuance de gris
 * @author Axel - ® fobec.com 2010
 */
public class ImageGrayScale {

    /**
     * Image d'entrée en couleur
     */
    private static String inFilename = "C:\\bugatti_veyron.png";
   /**
    * Image de sortie en nuance de gris
    */
    private static String outFilename = "C:\\bugatti_veyron_gray.png";

    public static void main(String args[]) {
        try {
            System.out.println("Début de conversion....");
            //Ouverture du fichier
            File inputFile = new File(inFilename);
            BufferedImage imagesrc = ImageIO.read(inputFile);
            //Convertion en grisé
            BufferedImage imagedst = new BufferedImage(imagesrc.getWidth(), imagesrc.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
            Graphics g = imagedst.getGraphics();
            g.drawImage(imagesrc, 0, 0, null);
            g.dispose();
            //Enregistrer l'image au format PNG
            File outFile = new File(outFilename);
            ImageIO.write(imagedst, "PNG", outFile);
            System.out.println("Fin de conversion....");
        } catch (IOException ex) {
            Logger.getLogger(ImageGrayScale.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour16/01/2011
VisualisationVu 920 fois
PublicInternaute
CategorieJAVA - Sources - AWT
Auteur de l'article
axel axel
connecté le 20/09/2011
28 ans - France Sud-Est
41 articles dans la section
Contacter l'auteur
Partager l'article