株式会社インターワーク

Javaで画像を表示する方法

Javaで画像を表示する方法として、ビューアを作成する手順を説明します。この記事では、JDeliのビューアに基づいて、画像を表示するためのごく基本的なJavaビューアを紹介します。

(更新:
JDeliJava画像処理
Javaで画像を表示する方法

Javaで画像を表示する方法として、ビューアを作成する手順を説明します。この記事では、JDeliのビューアに基づいて、画像を表示するためのごく基本的なJavaビューアを紹介します。

クラスを作成する

簡単なビューアを作るには、メニュー、ファイル・セレクタ、画像を表示するウィンドウが必要です。

まず、JFrameを継承したViewerというクラスと、コンストラクタから呼び出されるrunメソッドを作ります。

public class Viewer extends JFrame {
    int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
    int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
 
    public Viewer() {
        setTitle("Image Viewer");
        run();
    }
 
    private void run() {
        setSize(screenWidth - 100, screenHeight - 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Java.awt.ToolKitクラスを使って、画面の幅と高さを取得しています。これらは、後でフレームサイズや画像サイズを設定するのに使います。ビューアの名前は「Image Viewer」にしましたが、自由に変更してください。

スクリーンの幅と高さから100を引いて、より大きなビューアを持つことにしましたが、皆さんがどのようなサイズをお望みか、いろいろ試してみてください。

画像を表示するパネルの追加

フレームができたので、次にパネルとラベルを追加します。画像のラベルをScrollPaneの中に入れて、画像を上下にスクロールできるようにします。これは、runメソッドに以下を追加することで実現できます:

JLabel imageLabel = new JLabel();
imageLabel.setBounds(0, 0, getWidth() - 200, getHeight() - 200);
final JScrollPane scrollPane = new JScrollPane(imageLabel);
JPanel window = new JPanel();
// ここでは、ウィンドウレイアウトをborderlayoutに設定しました
// あなたが好きなレイアウトを選ぶことができます
window.setLayout(new BorderLayout());
window.add(scrollPane, BorderLayout.CENTER);
// add the JPanel window to the JFrame
add(window);
addMenu();
setVisible(true);

ここでは、画像ラベルの境界を、画面の幅と高さから200を引いた値に設定しましたが、これらの値は、画像をどの程度大きくしたいのか、あるいは小さくしたいのかに応じて変更できます。

メニューを追加する

ファイルを開くためにaddMenu()メソッドを作成します。後でこのメソッドを使う必要があるので、グローバル変数としてJMenuItem openを作成します。

JMenuItem open = new JMenuItem("Open");
 
private void addMenu() {
    JMenuBar menuBar = new JMenuBar();
    JMenu fileMenu = new JMenu("File");
    open.addActionListener(this);
    fileMenu.add(open);
    menuBar.add(fileMenu);
    setJMenuBar(menuBar);
}

ここでは、メニュー・バーとアイテムを作成し、それらをフレームに追加してJMenuBarを設定します。

メニューに機能を追加する

ここでは、ViewerクラスがActionListenerを実装していることを確認します。これは、メニュー・アイテムがクリックされたときにファイルを開くためです。したがって、このメソッドをオーバーライドする必要があります:

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() == open) {
        try {
            openFile();
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
    }
}

最後に、上で呼び出しているopenFileメソッドを作る必要があります。このメソッドはファイル・セレクタを開き、選択されたファイルを使ってimageLabel変数にアイコンを設定するものです。

private void openFile() throws IOException {
    final FileDialog fileChooser = new FileDialog((Frame) null, "File chooser");
    fileChooser.setMode(FileDialog.LOAD);
    fileChooser.setVisible(true);
    // ファイルが選択されていることを確認する
    if (fileChooser.getDirectory() != null && fileChooser.getFile() != null) {
        File file = new File(fileChooser.getDirectory() + fileChooser.getFile());
        // このラインにはJDeli jarが必要です
        BufferedImage image = JDeli.read(file);
        final int imageWidth = image.getWidth();
        final int imageHeight = image.getHeight();
 
        // ここで、画像がウィンドウに収まるようにする必要があります
        final float adjustment;
        if (imageWidth > imageHeight) {
            adjustment = 1 / (imageWidth / (float) (screenWidth - 200));
        } else {
            adjustment = 1 / (imageHeight / (float) (screenHeight - 200));
        }
        imageLabel.setIcon(new ImageIcon(image.getScaledInstance(
            (int)(imageWidth * adjustment),
            (int)(imageHeight * adjustment),
            Image.SCALE_SMOOTH)));
    }
}

次のステップ

画像を表示させたら、ここからがスタートです。画像の加工機能や注釈、特殊効果を加えるのはとても簡単です。JDeliのビューアをチェックすれば、たくさんのアイデアを発見することができるでしょう。

Javaで画像を扱う開発には多機能・高性能な開発ライブラリー(SDK) JDeliがきっとお役に立つことと思います。JDeliは無料で試用していただけます。画像フォーマット変換の機能や動作速度などを、まずはご自身の環境でご確認のうえ、ぜひ導入をご検討ください。

JDeli

Java画像ライブラリ。HEIC・WebP・DICOMなど20以上のフォーマットに対応。ImageIOの最大7倍高速。

開発者向けPDF入門ガイド 表紙
無料 eBook / 25p

開発者向けPDF入門ガイド

PDFの仕様や活用方法など、開発者に必要な情報をコンパクトにまとめました。初めてPDFを扱う開発者にも分かりやすく、基礎から応用までカバーしているため、PDFのポテンシャルを最大限に引き出し、アプリケーション開発やドキュメント管理の効率化を図るための手引きとなるでしょう。

ご興味のある製品:

ご入力いただいた情報は、eBookの送付およびインターワークからのご案内にのみ使用いたします。プライバシーポリシー