如何在java中填充图像?

时间:2016-04-24 20:45:40

标签: java arrays image-processing padding

为了填充图像,我试图填充一个小的3 * 3阵列。我可以镜像原始数组的最后一列和最后一行来获得一个4 * 4数组(我的第一个代码)。但是当我为3 * 4数组尝试此代码时,我得到ArrayIndexOutOfBound错误(我的第二个代码)。有人可以帮忙吗?

-

我的第一个代码:

package org.eclipse.wb.swing;

public class Padding_test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        int[][] table = new int[3][3];
        for (int row = 0; row < 3; row ++)
            for (int col = 0; col < 3; col++)
                table[row][col] = ((row * 3 + col)+1);

        for (int row = 0; row < 3; row ++){
            for (int col = 0; col < 3; col++){
                System.out.print (table[row][col]);
    }
          System.out.println();  
        }

        System.out.println();

        int [][] temp = new int[table.length+1][table[0].length+1] ;

        for ( int x=0 ; x<table[0].length+1 ; x++){
            for (int y=0 ; y<table.length+1 ; y++){
                temp[x][y] = 0;

                System.out.print(temp[x][y]);
            }
            System.out.println();
            }

        for ( int count = 0 ; count < table.length ; count++){
        for (int xx=0 ; xx<table[0].length ; xx++)
        {
            temp[xx][count]= table[count][xx];
            temp[xx+1][count]= temp[xx][count];
        }

        }

        int th = temp.length;

        System.out.println();

        for (int yy = 0 ; yy< temp.length ; yy++){

            temp [yy][th-1]=temp [yy][th-2];            }


        for (int px =0 ; px<temp.length ; px++){
            for (int py=0 ; py<temp[0].length ; py++){
                System.out.print(temp[py][px]);
            }
            System.out.println();
        }

    }
}

_

我的第二个代码

但是当我运行此代码时出现错误:

package org.eclipse.wb.swing;

public class Padding_test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub      

        System.out.println();        
        int [][] table = { {1,2,3,4},{2,5,7,9},{6,8,9,0}};

        for (int i =0 ; i <table.length ; i ++){
            for (int j =0 ; j < table[0].length ; j++)
            {
                System.out.print(table[i][j]);
            }
            System.out.println();
        }

        System.out.println();
        int width = table[0].length;
        int Height = table.length;

        System.out.println( "Width = "+ width );
        System.out.println("Height = " + Height);    

        int [][] temp = new int[table.length+1][table[0].length+1] ;

        for ( int x=0 ; x<table.length+1 ; x++){
            for (int y=0 ; y<table[0].length+1 ; y++){
                temp[x][y] = 0;

                System.out.print(temp[x][y]);
            }
            System.out.println();
            }

        for ( int count = 0 ; count < table.length ; count++){
            for (int xx=0 ; xx<table[0].length ; xx++){
                temp[xx][count]= table[count][xx];
                temp[xx+1][count]= temp[xx][count];
            }       
        }

        int th = temp.length;

        System.out.println();

        for (int yy = 0 ; yy< temp.length ; yy++){                              
            temp [yy][th-1]=temp [yy][th-2];            
        }       

        for (int px =0 ; px<temp.length ; px++){
            for (int py=0 ; py<temp[0].length ; py++){
                System.out.print(temp[py][px]);
            }
            System.out.println();
        }

    }
}

1 个答案:

答案 0 :(得分:0)

您的错误就在这一部分:

for (int x=0 ; x<table[0].length+1 ; x++) {
    for (int y=0 ; y<table.length+1; y++) {
        [...]
    }
}

您应该切换table[0].length+1table.length+1的地点。并且最好使用x作为索引而不是0(但它应该无关紧要,因为它是一个矩阵)。

结果:

for (int x=0 ; x<table.length+1 ; x++) {
    for (int y=0 ; y<table[x].length+1; y++) {
        [...]
    }
}

在您的代码中,您还有System.out.print(temp[py][px]);会引发错误。您应该更改pypx的位置,使其如下所示:System.out.print(temp[px][py]);

更新:您有第三个问题:

for (int count = 0 ; count < table.length; count++){
    for (int xx=0 ; xx < table[0].length; xx++){
        temp[xx][count]= table[count][xx];
        temp[xx+1][count]= temp[xx][count];
    }       
}

我不知道你在这里要做什么,但这是不好的代码:

  • 如果table.length大于table[0].length,则temp[xx][count]会抛出异常。

  • 如果table[0].length大于table.length,则temp[xx][count]和<{1}}都会抛出异常。