Java の ImageIO

Rupam Yadav 2023年10月12日
  1. Java で ImageIO を使用して画像を読み取る
  2. Java で ImageIO を使って画像の書き込みやフォーマットの変更を行う
Java の ImageIO

ImageIO は Java のクラスであり、画像の読み取りや書き込みなどの操作を実行するためのさまざまなメソッドを含む javax.imageio パッケージの一部です。

次のセクションでは、ImageIO クラスを使用して画像を読み書きする方法を学習します。

Java で ImageIO を使用して画像を読み取る

ImageIO クラスの read() 関数を使用して画像を読み取ります。プログラムでは、File のオブジェクトを作成し、コンストラクターで引数としてファイルのパスを渡します。

ImageIO を使用して read() メソッドを呼び出し、BufferedImage オブジェクトを返す file オブジェクトに渡します。画像の読み取りに成功し、JFrameImageIcon を使用して画像をウィンドウに表示します。

関数 setImageToFrame() を作成し、引数として bufferedImage を送信します。setImageToFrame() 関数では、ImageIcon のオブジェクトを作成し、setIcon() 関数を使用して JLabel のアイコンとして設定します。

フレームにラベルを追加してプログラムを実行すると、出力に画像が表示されます。

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

public class JavaExample {
  public static void main(String[] args) {
    try {
      File file = new File(
          "C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.jpg");

      BufferedImage bufferedImage = ImageIO.read(file);

      setImageToFrame(bufferedImage);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  static void setImageToFrame(BufferedImage image) {
    ImageIcon imageIcon = new ImageIcon(image);

    JFrame jFrame = new JFrame();
    jFrame.setLayout(new FlowLayout());
    jFrame.setSize(700, 500);

    JLabel jLabel = new JLabel();
    jLabel.setIcon(imageIcon);

    jFrame.add(jLabel);
    jFrame.setVisible(true);

    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

出力:

imageio1

read() 関数を使用して、リンクから画像を読み取ることもできます。

URL オブジェクトを作成し、画像へのリンクを引数コンストラクターとして使用する必要があります。URL オブジェクトを read() メソッドに渡します。

URL url = new URL(
    "https://images.unsplash.com/photo-1516475429286-465d815a0df7?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&dl=will-klinzman-oaCD9WYdNlU-unsplash.jpg&w=640");

BufferedImage bufferedImage = ImageIO.read(url);

出力:

imageio2

Java で ImageIO を使って画像の書き込みやフォーマットの変更を行う

ImageIO クラスを使用して実行できるもう 1つの便利な操作は、画像を書き込んでその形式を変更することです。前の例と同じように最初に画像を読み取り、次に 3つの引数を取る ImageIO クラスの write() 関数を呼び出します。

write() メソッドの最初の引数は、BufferedImage オブジェクトです。2 番目の引数は、新しい画像を書き込む形式または拡張子です。最後の引数は、新しい拡張子を持つ新しい画像へのパスを持つ File オブジェクトです。

この例では、画像の形式を JPG から PNG に変更します。元の画像と write() メソッドを使用して作成したもう 1つの画像の 2つの画像があります。

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class JavaExample {
  public static void main(String[] args) {
    try {
      File file = new File(
          "C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.jpg");

      BufferedImage bufferedImage = ImageIO.read(file);

      ImageIO.write(bufferedImage, "png",
          new File(
              "C:\\Users\\Rupam Saini\\IdeaProjects\\Java Examples\\src\\main\\java\\sample_image.png"));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

出力:

imageio3

著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn