fbpx

Javaで画像を表示する方法

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

著者 Amy Pearson (IDRsolutions)  翻訳 インターワーク

クラスを作成する

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

まず、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(); // image width
    final int imageHeight = image.getHeight(); // image height

    //ここで、画像がウィンドウに収まるようにする必要があります
    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)));
  }
}
				
			

このコードを実行して、うまく動作すれば次のようになります:

Javaで画像を表示、サンプル画面

次のステップ

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

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

    Facebook
    Twitter
    Email
    公式ブログロゴ

    製品に関する記事や開発者のブログ

    PDFファイルを扱うシステム開発・ウェブ開発に役立つ

    開発者向けPDF入門ガイド

    開発者向けPDF入門ガイド

    PDFの基礎から応用まで開発者のための入門ガイド2024年版

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

    MENU
    PAGE TOP
    ロボット
    PDFソフトウェアの開発に役立つ情報をメールでお届けします