Partage
  • Partager sur Facebook
  • Partager sur Twitter

[java] enregistrer graphics2D en image jpg/gif/png

    16 avril 2008 à 19:44:17

    Bonjour,
    J'ai trouvé une façon de faire cela mais il faut un BufferedImage, moi je n'en ai pas, j'ai juste mon Graphics2D. Dans ces exemples, le graphics2D est créé à partir du BuffeferedImage, il me faudrait l'inverse du coup pour mon problème :s
    Pour mettre en condition, je fais un jeu de la vie, donc le Graphics2D se met à jour régulièrement.

    Comment puis-je faire pour faire cela?

    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2008 à 21:27:37

      Peut être comme ça :

      Graphics2D g2 = (Graphics2D) monBuffer.getGraphics();
      try{
         ImageIO.write(monBuffer, "jpg", new File("monBuffer.jpg"));
      }catch(Exception ex) {ex.printStackTrace();}
      g2.dispose();
      
      • Partager sur Facebook
      • Partager sur Twitter
        16 avril 2008 à 22:55:09

        le truc c'est que mon g2d existe deja, la methode paintComponent(graphics g) me le fourni, j'ai donc ensuite un
        Graphics2D g2d = (Graphics2D)g;
        ...
        Donc j'ai déjà mon graphics2D, ensuite j'ai une boucle avec un thread qui sleep tout ca et qui redessine mon g2d.
        Le truc c'est que j'essaye de faire un bouton qui enregistrerait une capture d'ecran du plateau (du g2d en l'occurence). Donc je ne peux pas vraiment l'écraser :s
        si je prends ton exemple, monbuffer.getGraphics() ca va me faire un g2d vide non?
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2008 à 11:00:52

          En fait, dans ton paintComponent tu dessines un plateau si je comprend bien ?

          Utilise un double buffer software :

          private BufferedImage off_Image;
          
          public void paintComponent(Graphics g) {
          	super.paintComponent(g);
          
          	if(off_Image == null){
          		off_Image = new BufferedImage( getWidth() , getHeight() , BufferedImage.TYPE_INT_ARGB);
          		Graphics2D buffer = (Graphics2D) off_Image.createGraphics();
          		
          		buffer.setColor( Color.white );
          		buffer.fillRect( 0, 0, 400, 400 );
          		buffer.setColor( Color.black );
          		buffer.drawString( "affichage d'une ligne de texte", 100, 200 );
          		...
          	}
              
          	g.drawImage(off_Image, 0, 0, this);
          }
          


          C'est qu'un petit exemple, adapte le ...

          Le principe est simple, tu dessines dans une image, comme ça, libre à toi de l'enregistrer en JPEG, etc.
          Et dans paintComponent, tu affiches l'image !
          • Partager sur Facebook
          • Partager sur Twitter

          [java] enregistrer graphics2D en image jpg/gif/png

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown