JavaAppletを使ってみよう
Java には様々なメソッドが用意されています。
それらを工夫すれば、難しい計算無しに画像処理を楽しむことが出来ます。
(1)「画像」を表示してみよう
import java.applet.Applet;
import java.awt.*;
public class test4 extends Applet{
    
    Image imgs;
    
    public void init(){  // 初期化
        imgs = getImage(getCodeBase(), "test.gif");
    }
    
    public void paint(Graphics g){
        g.drawImage(imgs, 10, 50, this);
    }
}
このプログラムの名前は「test4.java」とします。
| abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) | 
| abstract boolean drawImage(Image img, int x, int y , Color bgcolor, ImageObserver observer) | 
これは良く知られていると思います。表示したい場所などを指定します。
また、バックカラーで、透明色を塗りつぶすことができます。
(2)「画像」を拡大・縮小してみよう
import java.applet.Applet;
import java.awt.*;
public class test4 extends Applet{
    
    Image imgs;
    int W, H;
    
    public void init(){  // 初期化
        imgs = getImage(getCodeBase(), "test.gif");
        W = imgs.getWidth(this);
        H = imgs.getHeight(this);
    }
    
    public void paint(Graphics g){
        g.drawImage(imgs, 10, 50, W/2, H/2, this);
    }
}
このプログラムの名前は「test4.java」とします。
| abstract boolean drawImage(Image img, int x, int y, int width, int height , Color bgcolor, ImageObserver observer) | 
| abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) | 
これで任意に拡大縮小ができます。(width ,height)
(3)「画像」を上下反転してみよう
画像を読み込み、その画像を上下反転するプログラムを作ってみましょう。
プログラムで記述する場合は、原点を中心にした回転で
のように表され、θを 180 度にすれば上下反転します。
上記の方法ではなく、上下反転を Java を利用して簡単に実現してみましょう。
import java.applet.Applet;
import java.awt.*;
public class test4 extends Applet{
    
    Image imgs;
    int W, H;
    
    public void init(){  // 初期化
        imgs = getImage(getCodeBase(), "test.gif");
        W = imgs.getWidth(this);
        H = imgs.getHeight(this);
    }
    
    public void paint(Graphics g){
        g.drawImage(imgs, 10, 50, W+10, H+50, W, H, 0, 0, this);
    }
}
このプログラムの名前は「test4.java」とします。
| abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2 , int sx1, int sy1, int sx2, int sy2 , Color bgcolor, ImageObserver observer) | 
| abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2 , ImageObserver observer) | 
これで、1部分を特定の場所に描く事ができます。
d.drawImage(imgs, 100, 100, 50, 50, 30, 40, 32, 32, this);
とすると、(100, 100)-(50, 50)の位置にイメージの(30, 40)-(32, 32)を描きます。 
つまり切り取って張り付ける事ができます。 
これを応用して、
d.drawImage(imgs, 100, 100, W + 100, H + 100, 0, 0, W, H, this);
とすると、(100, 100)からイメージを描写するのは分かると思います。これを、
d.drawImage(imgs, 100, 100, W + 100, H + 100, W, H, 0, 0, this);
と書くと180度回転します。
d.drawImage(imgs, 100, 100, W + 100, H + 100, W, 0, 0, H, this);
と書くと左右反転します。
d.drawImage(imgs, 100, 100, W + 100, H + 100, 0, H, W, 0, this);
と書くと180度 + 左右反転します。
スポンサードリンク
オススメ書籍
HTML5、CSS3、JavaScript等の学習に役立つ書籍を紹介します。
