这是我到目前为止所做的:
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度拍摄的照片。我该如何解决这个问题?
答案 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);