簡體   English   中英

在Java中將圖像逆時針旋轉90度

[英]Rotating image 90 degree counter clockwise in Java

public static int[][] rotate(int[][] array){
    int height = array.length;
    int width = array[0].length;
    int[][] rotatedArray = array;

    for(int col = 0; col < width; col++){
        for(int row = 0; row < height; row++){
            rotatedArray[row][col] = array[col][row];
        }
    }
    return rotatedArray;
}

這是我的代碼,作為將圖像反向旋轉90度的方法,但是它不起作用。 我不知道如何排列新的行和列並正確旋轉它,如何解決? 謝謝!

試試rotatedArray[row][col] = array[col][height - row - 1];

另外,您需要將rotatedarray數組定義為新數組。 現在,您要為其分配array ,這意味着它們都引用相同的數據。

您可以按照以下方法進行操作:

public static int[][] rotate(int[][] array) {
    int height = array[0].length;
    int width = array.length;
    int[][] rotatedArray = new int[height][];

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

請注意,原始數組的高度變為新數組的寬度,反之亦然。

通過使用rotatedArray[row][col] = array[col][row]換行和列索引,您將沿着對角線鏡像圖像,而不是旋轉它。 考慮一下-兩個索引都匹配的條目,例如array[0][0]array[1][1]都保持不變。 那不是你想要的!

我建議您繪制圖片以查看您看到的圖案。 您可以從2 x 2或3 x 3的小例子開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM