2011-05-13 47 views
0

確定。所以我們可以說我有這張圖片:http://i.stack.imgur.com/oYhJy.pngx和y上的Java裁剪

我正在嘗試將圖像裁切(它工作 - 我只是有錯誤的數字)到單獨的圖像數組。平鋪圖像(上面鏈接)寬度爲36,寬度爲15。所以這是1152像素的寬度(32瓦寬* 36瓦)和480像素高(32瓦高* 15瓦)。

這是我到目前爲止有:

  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; 
    } 

我在做什麼錯?它在技術上工作,但它得到錯誤的瓷磚圖像。

回答

1

大概應該是:

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

很好用!謝謝。 – nn2 2011-05-13 21:14:24

2

也許更清楚,如果你做了一個雙循環,而不是試圖用模量。

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

是的,我知道我必須重新設置X因爲新的水平。 – nn2 2011-05-13 21:12:12