イメージは,
イメージに対応する型 Image の説明を見ると,
Image クラスは抽象クラスである。イメージはプラットホーム固有の方法 で得られなければならない。
と書いてある.「抽象クラス」というのは,そのサブクラスをいくつか定義し て,そのサブクラスに属するオブジェクトは作られるが,そのクラスだけに属 するオブジェクトは作られないというものである.
しかし,具体的にどのようなサブクラスが存在するかというのは,プラット ホーム(処理系を実行する環境のこと.具体的には機種,OS,ライブラリなど) 固有である.しかし,Imageクラスを使う側はそれらのサブクラスの存在を意 識しなくても良い.
ファイルからイメージを読み込むときには,AWTの実装に固有な動作をさせる ために使う Toolkit というクラスのgetImageというメソッドを呼ぶ.現在の AWT に 対応する Toolkit クラスのオブジェクトはToolkit.getDefaultToolkit() で 得られるので,イメージを得るには, 「Toolkit.getDefaultToolkit().getImage(ファイル名)」のようにする. getImage では JPEG形式と gif形式の画像ファイルが読み込み可能である.
教育用システムの NC から Unixに入って java 処理系を使う際は,
drawImageをおこなうと,色が化けるという致命的なバグが見つかっている.
このバグを回避するために,gifファイルの色を化けないように変更するコマ
ンド /opt/ECC/bin/gif16bit を作成した.
gif16bit 元のgifファイル > 化けないgifファイル
を実行してできた「化けないgifファイル」はjavaでdrawImageすると,「元の
gifファイル」とほとんど同じ色で出る.
例をみてみよう.
// AWT を使うので,java.awt.* を import する.
import java.awt.*;
// イベント処理をおこなうので,
import java.awt.event.*;
// 独立したウィンドウを作るので,DrawImageは Frameのサブクラスとして定義
class DrawImage extends Frame implements KeyListener{
// イメージを表す Image クラスの変数 image の宣言
Image image;
// DrawImageクラスのコンストラクタ
public DrawImage(){
// 親クラスである Frameクラスのコンストラクタを
// タイトル文字列を "DrawImage"として呼ぶ.
super("DrawImage");
// 現在の Toolkit を得て,getImageで GIF 形式のファイルを指定して,
// イメージを得る.
image=Toolkit.getDefaultToolkit().getImage("test.gif");
addKeyListener(this);
}
public static void main(String [] args){
// DrawImageクラスのインスタンスを作る.
DrawImage frame=new DrawImage();
// ウィンドウのサイズを300 x 300 に指定する.
frame.setSize(300,300);
// ウィンドウを表示する.
frame.setVisible(true);
}
public void paint(Graphics g){
// イメージ image を (100,100)を左上にして表示する.
g.drawImage(image,100,100,this);
// イメージ image を (100,150)を左上にして,幅80高さ80で表示する.
g.drawImage(image,100,150,80,80,this);
}
// キーを押した際に発生するイベントを以下のメソッドで捕まえる.
public void keyPressed(KeyEvent e){
int key=e.getKeyChar();
// 入力したキーのコードが「q」だった時は終了するl
if(key=='q') System.exit(0);
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
Graphicsクラス のメソッド drawImage には,メソッドpaint中の2つめの
呼び出しのように,もとのイメージを拡大縮小して,表示させる機能もある.
上のプログラムを動かすためには,test.gifという gif 形式の画像ファイル を作る必要がある.教育用計算機センターのシステムでは,gimp, xpaint, xv, display などのコマンドで gif 形式の画像ファイルを作ることができる. センターのシステムで使う時は,gif16bit で変換するのを忘れないように.