0

画像を反転させるのに問題があります。私のプログラムは、デフォルトの画像と反転した画像を表示することになっています。反転した画像の(0,0)ピクセルを元の画像の(width-1、height-1)に置き換えることができれば機能すると思いましたが、元の画像を取得する代わりに、これを取得します。

これが私のコードです:

import java.awt.Color;

public class Horizontal {

public static void main(String[] args)
{
    Picture source = new Picture(args[0]);//name of picture.
    Picture flip = new Picture(source.width(), source.height());//sets the width and height of source

    for (int i =0; i < source.width(); i++)
    {
        int w = 1;
        int sw = source.width()-w;
        for (int j = 0; j < source.width(); j++)
        {
            int h=1;
            int sh =  source.height()-h;
            Color SourceColor =  source.get(sw,sh);// return the the color pixel of (sw,sh)
            flip.set(i, j, SourceColor);//suppose to replace the (i,j) pixel of flip with source's (sw,sh) pixel
            h++;
        }
        w++;
    }
    source.show();// shows the original image
    flip.show(); // shows flipped version of image
}

}

4

1 に答える 1

1

このサイトをチェックしてください。Javaの基本的な画像アルゴリズムに関する優れた情報があります。画像を反転するためのコードをコピーできます。

http://www.javalobby.org/articles/ultimate-image/#9

水平方向に反転:

public static BufferedImage horizontalflip(BufferedImage img) {  

    int w = img.getWidth();  
    int h = img.getHeight();  
    BufferedImage dimg = new BufferedImage(w, h, img.getType());  
    Graphics2D g = dimg.createGraphics();  
    g.drawImage(img, 0, 0, w, h, w, 0, 0, h, null);  
    g.dispose();  
    return dimg;  
}  

垂直に反転:

public static BufferedImage verticalflip(BufferedImage img) {  
        int w = img.getWidth();  
        int h = img.getHeight();  
        BufferedImage dimg = dimg = new BufferedImage(w, h, img.getColorModel().getTransparency());  
        Graphics2D g = dimg.createGraphics();  
        g.drawImage(img, 0, 0, w, h, 0, h, w, 0, null);  
        g.dispose();  
        return dimg;  
    }  
于 2012-12-24T01:27:04.270 に答える