2010年4月6日星期二

利用 Java 反轉圖片 (Use Java to reverse an image)

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
apple.jpg

以 verticalReverse(source) 修改後
edit with verticalReverse(source)
apple2.jpg

以 horizontalReverse(source) 修改後
edit with horizontalReverse(source)
apple3.jpg

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

沒有留言 :

發佈留言