[java] Enregistrer une image dans un fichier.

Enregistrer une image dans un fichier. [java] - Java - Programmation

Marsh Posté le 15-05-2005 à 13:23:40    

Mon programme trace une courbe dans un JPanel. Et j'aimerais savoir si c est possible et comment faire, pour enregistrer cette courbe dans un fichier image comme un jpg ou autre format.
 
Merci d'avance, si j'ai pas ete assez precis n'hesitez pas a me le dire je tacherai de detailler.

Reply

Marsh Posté le 15-05-2005 à 13:23:40   

Reply

Marsh Posté le 15-05-2005 à 16:45:43    

Reply

Marsh Posté le 16-05-2005 à 12:00:37    

Si t'utilises une BufferedImage, un ptit tour vers ImageIO et ca se fait en 2 sec. Tous les formats d'images ne sont pas acceptés, mais le jpeg marche c'est sur.

Reply

Marsh Posté le 16-05-2005 à 12:16:04    

ok merci :) c'est exactement ce que je cherchais.
 
Edit :  
 
(j ai pas utilisé imageIO mais JPEGCodec et JPEGImageEncoder)
 
Pour ceux que ca interesse voila ce que ca donne (ca marche ) :
Il faut importer :
import java.awt.image.BufferedImage;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
 
 
        public void saveComponentAsJPEG(Component myComponent, String filename) {
         Dimension size = myComponent.getSize();
         BufferedImage myImage = new BufferedImage(size.width, size.height,BufferedImage.TYPE_INT_RGB);
         Graphics2D graph = myImage.createGraphics();
         myComponent.paint(graph);
         try {
           OutputStream out = new FileOutputStream(filename);
           JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
           encoder.encode(myImage);
           out.close();
           System.out.println("la courbe a ete sauvée dans le fichier "+filename);
         } catch (Exception e) {
           System.out.println("Impossible de sauver la courbe : "+e);
         }
      }
 
Par contre j'ai encore un petit soucis : mon JPanel a un BackGroung de valeur white, mais le jpg sauvé a un fond noir.
Je debute en java je precise. Si quelqu un a une idée de la ou ca peut venir ... merci.


Message édité par patastronch le 16-05-2005 à 12:31:38
Reply

Marsh Posté le 21-05-2005 à 23:27:18    

Rajoute cette ligne :
myComponent.printAll(graph);

Reply

Marsh Posté le 16-06-2008 à 20:27:39    

Super le code, il m'a beaucoup aidé.
Mais je n'arrive pas à supprimer le fond noir :
ni avec myComponent.printAll(graph);
ni avec myComponent.paintAll(graph);
Si quelqu'un peut m'aider, merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed