Creation fichier jpg à partir d'un objet Image

Résolu
zaianeimed Messages postés 2 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 3 janvier 2007 - 2 janv. 2007 à 16:02
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 2 janv. 2007 à 22:50
comment puis je creer un fichier jpg à partir d'un objet Image deja rempli.
J'utilise le jdk 1.4
Merci

2 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
2 janv. 2007 à 16:17
Salut:

Tu dois convertir ton objet Image en un objet BufferedImage.
Puis utiliser la méthode write de la classe javax.imageio.ImageIO

File f = new File ("save.jpg");
try {
    ImageIO.write (bufferedImage, "jpg", f);
}
catch (IOException e) {
}
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
2 janv. 2007 à 22:50
Salut:

(Solution de twints)

Pour convetir une image vers un objet BufferedImage tu peux faire (solution complexe mais qui gère casi tout):

public BufferedImage createBufferedImage(Image image) {
    if(image == null) return null;
    if (image instanceof BufferedImage) return (BufferedImage) image;
    image = new ImageIcon(image).getImage();
    boolean hasAlpha = hasAlpha(image);
    BufferedImage bimage = null;
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    try {
        int transparency = Transparency.OPAQUE;
        if (hasAlpha)
            transparency = Transparency.BITMASK;
        GraphicsDevice gs = ge.getDefaultScreenDevice();
        GraphicsConfiguration gc = gs.getDefaultConfiguration();
        bimage = gc.createCompatibleImage(image.getWidth(null), image.getHeight(null), transparency);
    } catch (HeadlessException e) {
        // erreur pas d'ecran
    }
    if (bimage == null) {
        int type = BufferedImage.TYPE_INT_RGB;
        if (hasAlpha)
            type = BufferedImage.TYPE_INT_ARGB;
        bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
    }
    Graphics g = bimage.createGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();
    return bimage;
}

public boolean hasAlpha(Image image) {
    if (image instanceof BufferedImage) {
        BufferedImage bimage = (BufferedImage) image;
        return bimage.getColorModel().hasAlpha();
    }
    PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);
    try {
        pg.grabPixels();
    } catch (InterruptedException e) { return false;}
    ColorModel cm = pg.getColorModel();
    return cm.hasAlpha();
}
3
Rejoignez-nous