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

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

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

執筆者:掌田 津耶乃

イメージの保存は?


続いて、イメージをファイルに保存する方法についても考えてみましょう。これも、ImageIOクラスの機能を利用します。readによる読み込みがわかれば、書き出しもそれほど難しくはありません。

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"));
      Graphics g = img.getGraphics();
      g.setColor(new Color(255,0,0,50));
      g.fillRect(0,0,img.getWidth(),img.getHeight());
    } 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 ev) {
      try {
        ImageIO.write(img, "jpeg", new File("image2.jpg"));
      } catch (IOException e) {
        e.printStackTrace();
      }
      System.exit(0);
    }
  }
}

これは、起動時にimage.jpgを読み込み、これに赤い色を全体的に重ねて、プログラム終了時にimage2.jpgというファイル名で保存をします。

読み込んだイメージファイルにアンバーをかけて、終了時に保存する。

イメージ保存の流れ


では、イメージ処理の流れを整理していきましょう。ここでは、イメージを読み込んだ段階で、イメージ全体に赤い色を重ねています。この部分ですね。

img = ImageIO.read(new File("image.jpg"));
Graphics g = img.getGraphics();
g.setColor(new Color(255,0,0,50));
g.fillRect(0,0,img.getWidth(),img.getHeight());

イメージファイルから読み込んで作成されたBufferedImageに描画を行うには、このインスタンスからGraphicsを取得する必要があります。それが「getGraphics」です。これでGraphicsを取得し、後はpaintでやっていたのと同様にメソッドを呼び出して描画をします。

ImageIO.write(img, "jpeg", new File("image2.jpg"));


BufferedImageインスタンスのビットマップイメージをファイルに保存するには、ImageIOの「write」というメソッドを用います。これは、以下のようにして引数を指定します。

第1引数――保存するImageインスタンス
第2引数――保存するファイルのフォーマット
第3引数――保存先のファイルを示すFileインスタンス

これで、指定したファイルにBufferedImageのビットマップイメージが保存されます。writeも例外を発生させるので、try内で実行するのが基本です。

このImageIOの基本的な使い方がわかっていると、イメージファイルに簡単にアクセスできるようになります。Toolkitを使ったやり方よりも、今はImageIOを利用したほうが簡単でわかりやすいかも知れませんね。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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