Enregistrer un Graphics2D en une image jpeg sur le disque

hamsterEater Messages postés 9 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 16 juillet 2003 - 16 juil. 2003 à 16:08
TFlop Messages postés 1 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 12 juillet 2006 - 12 juil. 2006 à 10:21
Je voudrais savoir si il existe (forcement, enfin je crois) une solution pour enregistrer sous forme d'une image jpeg(ou autre format de compression) des dessins (dans mon cas des histogrammes) crees a l'aide du package Graphics2D dans une JFrame.

Merci de votre aide

ciao

10 réponses

hamsterEater Messages postés 9 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 16 juillet 2003
16 juil. 2003 à 18:23
J'ai trouve la solution, si quelqu'un est interresse je peux expliquer(c'est pas complique)
ciao
0
afra59 Messages postés 29 Date d'inscription vendredi 14 mars 2003 Statut Membre Dernière intervention 4 février 2004
4 sept. 2003 à 17:47
je suis preneur pour l'explication car je doit moi aussi enregistrer une image a ce format apres l'avoir redimenssionné

-------------------------------

> J'ai trouve la solution, si quelqu'un est interresse je peux expliquer(c'est pas complique)
> ciao
0
cs_Tytia Messages postés 13 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 24 juin 2006
25 févr. 2004 à 20:34
j'aimerais bien connaitre votre explication, j'en ai besoin pour enregistrer l'image d'un canvas sur le disque dur.
Tytia
0
olfa2004 Messages postés 1 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 2 mars 2004
2 mars 2004 à 11:01
moi aussi, j'ai besoin de ce code je l'ai besoin vraimant, si vous trouvez le code ..aidez moi c'est une partie de mon projet de fin d'etude..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tytia Messages postés 13 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 24 juin 2006
5 avril 2004 à 15:41
J'ai trouve comment faire, voici un bout de code :

BufferedImage loc_img=new BufferedImage(322,322,BufferedImage.TYPE_INT_RGB);
Graphics loc_g2d=loc_img.createGraphics();
//coloration du font en blanc
loc_g2d.setColor(Color.WHITE);
loc_g2d.fillRect(0,0,322,322);
//dessin du diagramme
my_paint(loc_g2d,par_Arbre,par_Niveau);
//enregistrement du graphique en image jpg sur le disque
File file; 
FileOutputStream out;
try
{
file = new File("Impression", par_Niveau.replace('.','-')+".jpg");
out = new FileOutputStream(file);
// To write the jpeg to a file uncomment the File* lines and
// comment out the ByteArray*Stream lines.
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(loc_img);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
try
{
encoder.encode(loc_img);
}
catch (IOException par_e)
{System.err.println(par_e.getMessage());}
out.close();
}
catch (IOException e){ return; }


Tytia
0
mickfuny Messages postés 2 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 10 août 2004
10 août 2004 à 12:41
ll faut recuperer sur le site de SUN le fichier ExampleFileFilter.java et l'integrer a son projet...

import java.io.*;
import javax.imageio.*;
import javax.imageio.ImageIO.*;
import java.io.IOException.*;
import java.awt.event.*;
import java.lang.Object.*;
import java.awt.Image.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

BufferedImage imagmodif;
private ImageIO ImgIO_Save;

if (e.getActionCommand().equals("Enregistrer...")) // action d'un bouton "Enregistrer..."
{
JFileChooser save = new JFileChooser(); // boite de dialogue pour choisir le dossier de destination...
int returnVal = save.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION)
{

try{ // c ici que l'enregistrement de imagmodif se fait.

File fichier=new File(save.getSelectedFile().getName());
ImgIO_Save.write(imagmodif,"jpg",fichier); // soit format "jpg" soit "png"

}

catch (IOException ex){}

}
}

j'espere avoir aidé quelqu'un...

J'ai tout de même une question... le probleme ici est qu'il prend l'image (le BufferedImage) et qu'il enregistre l'image sur le disque mais avec une nouvelle compression jpg.
Or moi je souhaiterais juste modifier des pixels d'une image existante au format jpg puis enregistrer la modif sans création d'un nouveau fichier et sans nouvelle compression.
Si quelqun peut m'aider..

Mick
0
Nerolph Messages postés 58 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 4 septembre 2012
14 oct. 2004 à 17:19
C'est pas possible, enfin je crois.

:question) Ner0lph :question)
0
Nerolph Messages postés 58 Date d'inscription vendredi 24 octobre 2003 Statut Membre Dernière intervention 4 septembre 2012
23 nov. 2004 à 20:26
je crois pas c'est sur
:question) Ner0lph :question)
0
elhamdihamza Messages postés 6 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 20 mai 2005
7 avril 2005 à 18:50
hamdi hamza
0
TFlop Messages postés 1 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 12 juillet 2006
12 juil. 2006 à 10:21
Je vous propose la solution suivante (2 ans aprés certes, mais d'aucun peuvent en avoir besoin aujourd'hui ;-)
Si vous êtes dans une applet alors vous avez une fonction paint qui prend le contexte graphique en paramètre.
Il vous suffit pour sauver ce qui est dessiner dans votre applet de faire :

    public void saveImage() throws Exception {
       // par choix une image carré assez petite (5 bit par canal de couelur)
        BufferedImage bf = new BufferedImage(480,480,BufferedImage.TYPE_USHORT_555_RGB);
        java.awt.Graphics2D g = bf.createGraphics();
        paint(g);      // appel à la fonction paint de l'applet
        g.dispose();
       
        // sauvegarde au format png
        String fmt="PNG";
        File outputfile = new File("/temp/output.png");
        ImageIO.write(bf,fmt,outputfile);
       
    }

En espérant que cela aide d'aucun.

TFlop
0
Rejoignez-nous