2011-05-13 9 views
0

OK. alors disons que j'ai cette image: http://i.stack.imgur.com/oYhJy.pngRecadrage Java en x et y

J'essaie de faire un recadrage (qui fonctionne - j'ai juste les mauvais chiffres) de l'image dans des tableaux d'images séparés. L'image de la tuile (liée ci-dessus) est de 36 tuiles de large et de 15 tuiles de long. Donc, c'est 1152 pixels de largeur (32 carreaux de largeur * 36 carreaux) et 480 pixels de hauteur (32 carreaux de hauteur * 15 carreaux).

Voici ce que j'ai jusqu'à présent:

  for (int xi = 0; xi < 522; xi++) {      
       int cropHeight = 32; 
       int cropWidth = 32; 
       int cropStartX = xi*32; 
       int cropStartY = 0; 
       if (xi % 36 == 0) { 
        cropStartY = xi*32; 
       } 


      BufferedImage processedImage = cropMyImage(originalImage, cropWidth, cropHeight, cropStartX, cropStartY); 
      tiles[xi] = processedImage; 
    } 

Qu'est-ce que je fais mal? Ça fonctionne techniquement, mais ça donne les mauvaises images.

Répondre

1

devrait probablement être:

int cropStartX = (xi%36)*32; 
int cropStartY = xi/36*32; 
+0

Fonctionne bien! Merci. – nn2

2

Probablement plus clair si vous avez fait une double boucle plutôt que d'essayer d'utiliser le module.

int i = 0; 
// no need to have these values inside a loop. They are constants. 
int cropHeight = 32; 
int cropWidth = 32; 

for (int x = 0; x < 36; x++) { 
    for (int y = 0; y < 15; y++) { 

      int cropStartX = x*32; 
      int cropStartY = y*32; 

      BufferedImage processedImage = cropMyImage(originalImage, cropWidth, cropHeight, cropStartX, cropStartY); 
      tiles[i++] = processedImage; 
    } 
} 
+0

Oui, je savais que je devais re-régler le X aussi en raison d'un nouveau niveau. – nn2