import java.awt.image.BufferedImage;
public static BufferedImage verticalReverse(BufferedImage source){
BufferedImage out = new BufferedImage(source.getWidth(), source.getHeight(), source.getType());
for (int i = 0; i < source.getWidth(); i++){
for (int j = 0; j < source.getHeight(); j++){
out.setRGB(i, j, source.getRGB(i, source.getWidth() - j - 1));
}
}
return out;
}
public static BufferedImage horizontalReverse(BufferedImage source){
BufferedImage out = new BufferedImage(source.getWidth(), source.getHeight(), source.getType());
for (int i = 0; i < source.getWidth(); i++){
for (int j = 0; j < source.getHeight(); j++){
out.setRGB(i, j, source.getRGB(source.getHeight() - i - 1, j));
}
}
return out;
}修改前
before

以 verticalReverse(source) 修改後
edit with verticalReverse(source)

以 horizontalReverse(source) 修改後
edit with horizontalReverse(source)

對於 verticalReverse(BufferedImage) 及 horizontalReverse(BufferedImage)
其實可以修改為 reverse(BufferedImage, int) 來處理
利用 int 指定為垂直或水平
例如 final int VERTICAL = 0 及 final int HORIZONTAL = 1
透過 switch 或 if 判斷使用哪一種 reverse 比較有規劃性
沒有留言 :
張貼留言