Java Image坐标(0,0)位于右下角

时间:2014-07-09 17:57:18

标签: java image-processing

当我与图像交互时,我遇到了这个奇怪的问题,例如

img.getRGB(imgx, imgy);

g.drawImage(img, x, y, x+16,y+16, imgx, imgy, imgx+16, imgy+16);

图像的坐标系(imgx,imgy)以右下角为中心。

public class Terrain {

private final TerrainTile[][] terrainArray;

public Terrain(BufferedImage img) {

    System.out.println("X: " + img.getWidth() + " Y: " + img.getHeight());
    terrainArray = new TerrainTile[img.getWidth()][img.getHeight()];

    for (int x = 0; x < img.getWidth(); x++) {
        for (int y = 0; y < img.getHeight(); y++,) {
            System.out.println("X: " + x + " Y: " + y + " Color: " + img.getRGB(x, y));
            fillTerrain(x, y, img.getRGB(x, y));
        }
    }

}

private void fillTerrain(int x, int y, int color) {
    switch (color) {
    case 0xFF0000FF: // BLUE
        terrainArray[x][y] = TerrainTile.WATER;
        break;
    case 0xFF00FF00: // GREEN
        terrainArray[x][y] = TerrainTile.GRASSLAND;
        break;
    case 0xFF007F00: // DARK GREEN
        terrainArray[x][y] = TerrainTile.FORREST;
        break;
    case 0xFF666666: // GREY
        terrainArray[x][y] = TerrainTile.HILL;
        break;
    default: // BLANK
        terrainArray[x][y] = TerrainTile.BLANK;
        break;
    }
}

因此,从图像“扫描”的游戏地图总是旋转180° 当我打印出来时

    public void printTerrain() {
    for (int x = 0; x < terrainArray.length; x++) {
        for (int y = 0; y < terrainArray[0].length; y++) {
            System.out.print(getTileID(x, y) + ", ");
        }
        System.out.println();
    }
}

这是正常的,防止这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在你的代码的某个地方,我相信你正在旋转图形&#34; g&#34;这可能导致这种情况发生。有一个MCVE来弄清楚什么是错误的。

也许查看img.getRGB(16,16)给你的内容,你可能会发现代码中有什么问题。