Redimensionner un BufferedImage

Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016
-
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
-
Bonjour,

Je cherche comment redimensionner un BufferedImage. Bien entendu j'ai trouvé cela dans la FAQ (http://java.developpez.com/faq/gui/?page=graphique_general_images#GRAPHIQUE_IMAGE_redimensionner)
mais cela ne correspond pas à ce que je veux. En effet l'image que je
veux redimensionner est aléatoire et peut donc avoir des tailles
différentes. Je voudrais donc pouvoir redimensionner l'image pour
l'écrire ensuite sur le disque.


je voudrais donc savoir comment faire pour redimensionner l'image soit
dans le BufferedImage ou au moment de l'ecriture ImageIO.write(...).


Si vous avez des solutions merci d'avance

2 réponses

Messages postés
113
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
12 août 2016

C'est bon probleme résolu avec :

Image image = monImage.getScaledInstance(largeur, hauteur, BufferedImage.SCALE_SMOOTH);
            image.flush();
            monImage = new BufferedImage(largeur, hauteur, BufferedImage.TYPE_INT_RGB);
            monImage.createGraphics().drawImage(image, 0, 0, null);
            monImage.flush();

Florent
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
    /*
     * "getIconImage" uses the scaling version of "drawImage"
     * which ist faster than "java.awt.Image#getScaledInstance"
     */
    public BufferedImage getIconImage(JPanel panel, BufferedImage image, int size) {
        int w = image.getWidth();
        int h = image.getHeight();
        double f = 0;
        if (w < h) {
            f = (double) h / (double) w;
            w = (int) (size / f);
            h = size;
        } else {
            f = (double) w / (double) h;
            w = size;
            h = (int) (size / f);
        }
        BufferedImage iconImage;
        GraphicsConfiguration conf = getGraphicsConfiguration();
        iconImage = conf.createCompatibleImage(w, h, image.getTransparency());
        Graphics2D g = iconImage.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g.drawImage(image, 0, 0, w, h, null);
        g.dispose();
        return iconImage;
    }
...
                    BufferedImage pictureResized = getIconImage(p, image, pictureSize);
                    try {
                        String name = directory.getName();
                        name = name + "_" + (count2 < 10 ? "0" : "");
                        String saveName = saveDir.getAbsolutePath() + "\" + name + count2 + ".jpg";
                        ImageIO.write(pictureResized, "jpg", new File(saveName));
                        count2++;
                    } catch (IOException ex) {
                        Logger.getLogger(PictureViewerDemo.class.getName()).log(Level.SEVERE, null, ex);
                    }