Partage
  • Partager sur Facebook
  • Partager sur Twitter

Découper des sprites dans un tableau.

Sujet résolu
    24 juin 2009 à 18:27:38

    Salut ,

    Je cherche un moyen simple et efficace de diviser des planches de sprites de même dimensions et de les mettre dans un tableau sous formes d'images.

    J'ai cherché sur le net mais les méthodes trouvées ne sont pas tout à fait adaptées (beaucoup de lignes et difficile d'en faire une boucle efficace).

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2009 à 20:22:55

      Toutes les boucles en général c'est la même chose, elle découpent la planche selon les dimensions d'une image pour les stocker dans un tableau de BufferedImage.
      Y'a peut-être des variantes mais ça revient toujours à ça.

      Sinon poste le/les code(s) à problèmes pour voir si on peut faire mieux...
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2009 à 21:39:16

        Alors:
        BufferedImage toBufferedImage(Image image) {
                /* On test si l'image n'est pas déja une instance de BufferedImage */
                if( image instanceof BufferedImage ) {
                        /* cool, rien à faire */
                        return( (BufferedImage)image );
                } else {
                        /* On s'assure que l'image est complètement chargée */
                        image = new ImageIcon(image).getImage(); //(1)
                        
                        /* On crée la nouvelle image */
                        BufferedImage bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB );
                        Graphics g = bufferedImage.createGraphics(); //(2)
                        g.drawImage(image,0,0,null);
                        g.dispose();
                        
                        return( bufferedImage );
                } 
        }
        

        source

        BufferedImage i = ImageIO.read(new File("/image.jpg"));
                
        BufferedImage a1 = new BufferedImage(i.getWidth()/2, i.getHeight()/2, BufferedImage.TYPE_INT_RGB);
        BufferedImage a2 = new BufferedImage(i.getWidth()/2, i.getHeight()/2, BufferedImage.TYPE_INT_RGB);
        BufferedImage b1 = new BufferedImage(i.getWidth()/2, i.getHeight()/2, BufferedImage.TYPE_INT_RGB);
        BufferedImage b2 = new BufferedImage(i.getWidth()/2, i.getHeight()/2, BufferedImage.TYPE_INT_RGB);
                
        a1.getGraphics().drawImage(i, 0, 0, a1.getWidth(), a1.getHeight(), 0, 0, i.getWidth()/2, i.getHeight()/2,null);
        // Idem avec a2, b1 et b2
         
        ImageIO.write(a1, "jpg", new File("/a1.jpg"));
        // Idem avec a2, b1 et b2
        

        source

        Il y en avait d'autres mais je les retrouve plus . Mais bon c'est lourd pour pas grand chose ces méthodes et ça ne correspond pas exactement à ce que je cherche.


        En gros , je veux charger une image et décomposer les sprites qui la composent en un tableau d'Images.


        merci d'avance.


        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2009 à 22:23:20

          public static BufferedImage[] splitImage(BufferedImage img, int cols, int rows) {
          	int w = img.getWidth()/cols;
          	int h = img.getHeight()/rows;
          	int num = 0;
          	BufferedImage imgs[] = new BufferedImage[w*h];
          	for(int y = 0; y < rows; y++) {
          		for(int x = 0; x < cols; x++) {
          			imgs[num] = new BufferedImage(w, h, img.getType());
          			// Tell the graphics to draw only one block of the image
          			Graphics2D g = imgs[num].createGraphics();
          			g.drawImage(img, 0, 0, w, h, w*x, h*y, w*x+w, h*y+h, null);
          			g.dispose();
          			num++;
          		}
          	}
          	return imgs;
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2009 à 22:31:41

            Merci beaucoup. Je test. :)
            • Partager sur Facebook
            • Partager sur Twitter

            Découper des sprites dans un tableau.

            × 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