如何在Java中创建一个方法,将图像顺时针旋转90度?

时间:2013-10-23 21:45:04

标签: java rotation

这是我到目前为止所做的:

public static Photograph rotated(Photograph photo) {
    Photograph rotated_copy = new Photograph(photo.getHeight(), photo.getWidth());
    Pixel starting_pixel = photo.getPixel(0,0);

    for(int col = 0; col < photo.getWidth(); col++){
        for(int row = 0; row < photo.getHeight(); row++){
            starting_pixel = photo.getPixel(col,row);
            rotated_copy.setPixel(row, col, starting_pixel);
        }
    }
    return rotated_copy;
}

但是,此方法可以逆时针旋转90度拍摄的照片。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

public static Photograph rotated(Photograph photo) {
    Photograph rotated_copy = new Photograph(photo.getHeight(), photo.getWidth());
    Pixel starting_pixel = photo.getPixel(0,0);

    for(int col = 0; col < photo.getWidth(); col++){
        for(int row = 0; row = photo.getHeight(); row++){
            starting_pixel = photo.getPixel(col,row);
            rotated_copy.setPixel(photo.getHeight() - row - 1, col, starting_pixel);
        }
    }
    return rotated_copy;
}

我想。

答案 1 :(得分:0)

编辑:嗯,不幸的是,这很接近但不太奏效。它在旋转图像时反射图像。你可以解决这个问题:

不是将坐标放在相反的位置(X中的X和Y中的Y),而是必须以不同的顺序存储它们。

想想这个问题。顺时针旋转90'后,坐标(0,0)(0,HEIGHT)应该变为(0,HEIGHT),(WIDTH,0)对吗?

所以而不是:

starting_pixel = photo.getPixel(col,row);
rotated_copy.setPixel(row, col, starting_pixel);

你需要像

这样的东西
starting_pixel = photo.getPixel(col,row);
rotated_copy.setPixel(photo.getWidth() - row, col, starting_pixel);