Java の ImageIO
ImageIO
は Java のクラスであり、画像の読み取りや書き込みなどの操作を実行するためのさまざまなメソッドを含む javax.imageio
パッケージの一部です。
次のセクションでは、ImageIO
クラスを使用して画像を読み書きする方法を学習します。
Java で ImageIO
を使用して画像を読み取る
ImageIO
クラスの read()
関数を使用して画像を読み取ります。プログラムでは、File
のオブジェクトを作成し、コンストラクターで引数としてファイルのパスを渡します。
ImageIO
を使用して read()
メソッドを呼び出し、BufferedImage
オブジェクトを返す file
オブジェクトに渡します。画像の読み取りに成功し、JFrame
と ImageIcon
を使用して画像をウィンドウに表示します。
関数 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);
}
}
出力:
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);
出力:
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();
}
}
}
出力:
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