如何垂直翻转图像?

时间:2018-01-27 23:08:43

标签: java

我试图让这段代码运行,但我不断收到错误说:

在main.Main.flipVertically(Main.java:403),这是下面的代码。

img [row] [col] = img [height - row - 1] [col];

我不知道代码或他们所谈论的错误有什么问题。

以下是代码的其余部分:

public static int[][] flipVertically(int[][] img) {

    String dir = "image.jpg";

    img = Util.readImageToMatrix(dir);


    int height = img[0].length;
    int width = img.length;

    for(int row = 0; row < height/2; row++)
        {

            for(int col = 0; col < width; col++)
            {
                int p = img[row][col];
                img[row][col] = img[height - row - 1][col];
                img[height - row - 1][col] = p;
            }
        }
    return img;


}

1 个答案:

答案 0 :(得分:1)

  1. 交换高度和宽度

    int height = img.length;
    int width = img[0].length;
    
  2. 你不能在循环中读取矩阵并使用函数输入中的参数img,或者更好地创建一个新矩阵。

  3. 您可以交换整行,如:

    public static void flipVertically(int[][] img) {
    
        int height = img.length;
        int width = img[0].length;  
    
        for(int row = 0; row < height/2; row++)
        {
            int [] myrow =  img[row];
            img [row] = img[height - row - 1];
    
            img[height - row - 1] = myrow;          
        }      
    }