在java中垂直和水平重复图像

时间:2014-03-26 05:59:28

标签: java repeat

我需要尝试复制并复制由数组(a)创建的垂直和水平图像,以使正方形充满重复图像。所以从1平方图像开始,我希望水平复制2次,垂直2次,它将创建另一个图像,其中包含4个初始图像,2x2。

public static int[][] replicate(int[][] a) {
    int[][] replicated = new int[a.length * 2][a[0].length * 2];

    for (int r = 0; r < 2; r++) {
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                replicated[i][j + r * a[i].length] = a[i][j];
            }
        }
    }

    for (int r = 0; r < 2; r++) {
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                replicated[i + r * a.length][j] = a[i][j];
            }
        }
    }
    return replicated;
}

这使得它们穿过水平线1线,垂直线1线,但没有完全填充。所以,如果我跑了这个,我会错过4个图像的右下角。我把它们放在一起很麻烦。

1 个答案:

答案 0 :(得分:0)

public static int[][] replicate(int[][] image) {
    int[][] replicated = new int[a.length * 2][];

    for (int y=0; y<image.length; y++) {
        int[] column = image[y];

        replicated[y] = new int[column.length * 2];
        replicated[y + image.length] = new int[column.length * 2];

        System.arraycopy(column, 0, replicated[y], 0, column.length);
        System.arraycopy(column, 0, replicated[y], column.length, column.length);
        System.arraycopy(column, 0, replicated[y + image.length], 0, column.length);
        System.arraycopy(column, 0, replicated[y + image.length], column.length, column.length);
    }

    return replicated;
}

这段代码可能存在一些问题,因为我不是在编译器之前编写它,但我认为它可以解决这个问题。

另外,如果这是用于绘制图像,则应考虑使用TexturePaint代替。