Javaで画像を表示する方法

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

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

クラスを作成する

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

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

				
					public class <a href="https://javadoc.idrsolutions.com/org/jpedal/examples/viewer/Viewer.html" target="_blank" title="declaration: package: org.jpedal.examples.viewer, class: Viewer">Viewer</a> 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 &amp;&amp; fileChooser.getFile() != null) {
    File file = new File(fileChooser.getDirectory() + fileChooser.getFile());
// このラインにはJDeli jarが必要です
    BufferedImage image = <a href="https://www.intwk.co.jp/jdeli/" title="Javaでイメージファイルを安全に扱うJDeliは、HEICやその他のイメージファイル形式をJavaで簡単に読み書き、変換、操作、処理できるようにするJava SDKです。HEIC画像の読み出し/書き込みJDeliは、開発者にHEIC画像フォーマットの包括的なサポートを提供します。また、JPEG/JPEG2000、PNG、TIFFファイルを含む他の画像フォーマットのサポートも強化されています重要なファイルを安全に保管JDeliは、お客様のサーバー上で動作し" hreflang="ja" onover-preload="1">JDeli</a>.read(file);
    final int imageWidth = image.getWidth(); // image width
    final int imageHeight = image.getHeight(); // image height

    //ここで、画像がウィンドウに収まるようにする必要があります
    final float adjustment;
    if (imageWidth &gt; 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は無料で試用していただけます。画像フォーマット変換の機能や動作速度などを、まずはご自身の環境でご確認のうえ、ぜひ導入をご検討ください。

画像に透かしを入れる

どんな処理ができますか?ウォーターマークは画像に透かしを追加するもので、テキスト、図形、画像のいずれでも可能です。追加したい透かしに応じて、いくつかのパラメータを受け取ります。すべての透かしは入力として watermark position enum を指定する必要があり、 FitToImage、 Center、 USE_SHAPE_COORDINATES から選べます。JavaでBufferedImageを使ったウォーターマーク処理

画像のミラーリング

どんな処理ができますか?ミラー操作は、画像をミラーリングするために使用できます。画像は水平または垂直に反転します。JavaでBufferedImageを使ったミラーリング処理ミラー操作に関するJavadocを見るその他のコード例以下のコード例を使用して、画像フォーマットを処理および変換します:Fileの使用InputStreamとOutputStreamの使用

JDeli入門

このページでは、JDeliについてより詳しく学び、まずはご自身のマシンでJDeliを動かしてみてください。

画像をぼかす

どんな処理ができますか?ぼかし演算は、3*3のカーネルマトリックスを使って画像をぼかすことができます。JavaでBufferedImageを使ったぼかし処理ぼかし処理に関するJavadocを見るその他のコード例以下のコード例を使用して、画像フォーマットを処理および変換します:Fileの使用InputStreamとOutputStreamの使用byte[]の

Facebook
Twitter
Email
公式ブログロゴ

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

開発チームに最適なJava画像ライブラリとは?

画像処理は現代のJavaアプリケーションにおいて避けて通れない機能の一つです。Webサービスでのサムネイル生成、ドキュメント管理システムでのファイル変換、データ分析での可視化出力など、様々な場面で画像ライブラリの品質がシステム全体の安定性を左右します。

多くの開発チームが最初に手を伸ばすのは、Java標準のImageIOやオープンソースのライブラリでしょう。確かに導入は簡単で、基本的な画像処理には十分に見えます。しかし、プロダクション環境で実際に運用を始めると、思わぬ落とし穴に遭遇することがあります。

開発チームに最適なJava PDFライブラリとは?

「オープンソースで十分じゃない?」
そう考えるエンジニアは少なくありません。確かに無償のライブラリは機能が豊富で、改変も自由です。しかしバグ修正やセキュリティパッチを自分たちで追い続ける労力、サードパーティのパッケージを呼び出すリスク、そしてライセンス条件の判断に迷う時間などを考えると、コードを書かない”隠れコスト”が静かに膨らんでいきます。

「保守や脆弱性対応に追われて本来の開発が進まない!」

そんな声が聞こえてきたら、商用ライブラリへの切り替えどきかもしれません。

開発チームに最適なPDF-HTML変換ツールとは?

開発チームに最適なPDF-HTML変換ツールとは?PDFからHTMLへの変換において開発者が直面する課題と、それを解決するBuildVuの特長を解説。正確な変換品質、スケーラビリティ、セキュリティ、開発者フレンドリーな出力、そしてシンプルな料金体系で、チーム開発の効率を高める方法をご紹介します。

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

開発者向けPDF入門ガイド

開発者向けPDF入門ガイド

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

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

MENU
PAGE TOP