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(row, col, starting_pixel);
        }
    }
    return rotated_copy;
}

但是,此方法会将拍摄的任何照片逆时针旋转 90 度。我怎样才能解决这个问题?

4

2 回答 2

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;
}

我认为。

于 2013-10-23T21:54:02.547 回答
0

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

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

想想问题。顺时针旋转 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);
于 2013-10-23T21:55:09.753 回答