Javaプログラミング/Javaの基本

イメージの読込と保存(3ページ目)

イメージファイルを読み込んだり、イメージをファイルに保存する方法について考えていきましょう。

執筆者:掌田 津耶乃

もう1つのイメージファイルの読み方


Toolkitを使った読み方の他に、実をいえばもう1つ、イメージファイルを読み込む方法というのがあります。それは「ImageIO」というクラスを使ったものです。実をいえば、こちらのほうが、今回の「目玉」なのです。

ImageIOクラスは、イメージファイルの読み書きに関する機能をまとめたものです。これを利用することで、イメージファイルを読み込んだり、ファイルに書き出したりすることが簡単にできます。では、先ほどの例を、ImageIO利用の形に書き直してみましょう。

package jp.allabout;

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;

import javax.imageio.*;

public class SampleApp extends Frame {
  BufferedImage img;

  public SampleApp(){
    this.setSize(new Dimension(300,200));
    this.addWindowListener(new WindowMyAdapter());
    try {
      img = ImageIO.read(new File("image.jpg"));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  
  public void paint(Graphics g){
    if (img != null){
      g.drawImage(img,0,0,this  );
    }
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
  
  class WindowMyAdapter extends WindowAdapter {
    
    public void windowClosing(WindowEvent arg0) {
      System.exit(0);
    }
  }
}


ImageIOは、javax.imageioというパッケージに用意されていますので、このパッケージのクラスをimportしておくのを忘れないようにしてください。また、このImageIOにあるメソッドでイメージファイルを読み込むのに、java.ioとjava.awt.imageのパッケージにあるクラスを利用しますので、これもあわせてimportしておく必要があります。計3つのパッケージ内のクラスをimportしておきましょう。

img = ImageIO.read(new File("image.jpg"));

イメージの読み込みは、「read」というメソッドを使います。引数には、「File」インスタンスというものを指定します。これは、ファイルを扱うためのクラスで、ただ単にnew File( ファイル名 )としてインスタンスを作るだけです。Fileについてはあらためて説明する機会もあると思いますので、ここでは「こうやってnew Fileを引数に指定すれば、イメージファイルが読めるんだ」ということだけ頭に入れておけばよいでしょう。

このreadは、ファイルの読み込みに失敗した場合、IOExceptionという例外を発生させることがあります。このため、try内で実行するようにしておきましょう。

このreadで読み込まれるイメージは、Imageインスタンスではなく、「BufferedImage」というクラスのインスタンスとして渡されます。これは文字通り「バッファつきのイメージ」のクラスです。Imageにはない機能をいろいろと備えており、より柔軟にイメージを扱うことができます。

BufferedImageは、Imageを継承して作られていますので、Imageを利用する場面ではたいていBufferedImageも利用することができます。GraphicsのdrawImageでも、そのままBufferedImageを引数に指定して描画させることができます。
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます