Redimensionner un BufferedImage

cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016 - 13 mai 2008 à 12:53
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 13 mai 2008 à 14:44
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
A voir également:

2 réponses

cs_flolag Messages postés 113 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 12 août 2016
13 mai 2008 à 14:00
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
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
13 mai 2008 à 14:44
    /*
     * "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);
                    }
0
Rejoignez-nous