金子邦彦研究室プログラミングJava のプログラム例Java から ImageMagick の機能を使う(JMagick を使用)

Java から ImageMagick の機能を使う(JMagick を使用)

このページでは,ImageMagickJMagickEclipse を使い, 画像ファイルの書き込みを行う Java プログラムを作る手順を図解で説明する.JMagick のインストール手順も説明する. (画像ファイルの読み出しについては,別の Web ページに例を示している).

関連する外部ページ
http://kyle-in-jp.blogspot.com/search/label/JMagick : JMagick を使った画像処理プログラムの見本が載ったすばらしい Web ページ

必要となるソフトウェア

設定項目

前もって,Eclipse インストールディレクトリを調べておいてください このページでは,次のように書く.

JMagick インストール手順

JMagick, ImageMagick のダウンロード

JMagick の動作には,ImageMagick が必要になります

ImageMagick とは, 画像ファイルの入出力,画像の編集を行うソフトウェア. その機能は https://imagemagick.org/script/command-line-tools.php に公式ドキュメントがある. ImageMagick には,ImageMagick の機能を C から呼び出すための MagickWand というソフトが同封されている.これを使って,ImageMagick の機能を Java から呼び出すことができる.MagickWand と Java の橋渡しをするのが,JMagick です.

下記の手順で,JMagick のダウンロードサイトから JMagick と ImageMagick をダウンロードします.

ImageMagick の Windows 用のバイナリ版は,いろいろなところから配布されているが,KMagic との相性が気になるので, JMagick のダウンロードサイトから入手することにします.

  1. ImageMagick の web ページを開く
  2. JMagick」をクリック

    [image]
  3. JMagick」をクリックして,JMagick の Web ページに飛ぶ

    [image]
  4. Downloads」をクリックして,JMagick のダウンロード説明 Web ページに飛ぶ

    [image]
  5. downloads.jmagick.org」をクリックして,JMagick のダウンロード用 Web ページに飛ぶ

    [image]
  6. バージョン「6.3.9」をクリック

    ※ 6.4.0 をクリックすると,ソースコードはあるが Window 用のバイナリファイルがない(2009//01時点).

    [image]
  7. ファイルのダウンロード

    次のファイルをダウンロード.(ImageMagick と JMagick の両方)

    [image]
  8. jmagick-win-6.3.9-Q16.zip の解凍

    解凍して,分かりやすいディレクトリに置いておくこと.展開(解凍)すると次のようなファイルができる.

    ImageMagick のインストール

    1. 先ほどダウンロードした ImageMagick-6.3.9-0-Q16-windows-dll.exeを実行

      [image]
    2. ようこそ画面

      Next」をクリック.

      [image]
    3. ライセンス条項

      ライセンス条項に同意するので「I accept the agreement」をチェックする. その後,「Next」をクリック.

      [image]
    4. お知らせ

      Next」をクリック.

      [image]
    5. インストールディレクトリ

      インストールディレクトリはこのままでよい.「Install」をクリック.

      [image]
    6. スタートメニューフォルダ

      スタートメニューフォルダは,デフォルト (ImageMagick 6.3.9 Q16) のままでよい.「Next」をクリック.

      [image]
    7. 追加タスクの設定

      Install development headers and libraries for C and C++」をチェックし,「Next」をクリック.

      [image]
    8. インストールの開始

      Install」をクリック.

      [image]
    9. インストール中

      [image]
    10. お知らせ

      Next」をクリック.

      [image]
    11. インストールの終了

      Finish」をクリック.

      [image]
    12. 環境変数の確認

      「追加タスクの設定」で,「Update executable search path」のチェックを付けたままにしておいた場合,環境変数 PATH を自動で設定することに注意. 環境変数 PATH の先頭に, 「C:\Program Files\ImageMagick6.3.9;」が自動的に追加される.

    Eclipse で JMagick プログラムを動かしてみる

    Eclipse で,新規プロジェクトの作成,HelloWorld クラス作成を行う.

    あらかじめ決めておく事項

    プロジェクトの新規作成

    下記の手順で,プロジェクトを新規に作成する.

    プロジェクトを作成すると,ワークスペースのディレクトリ(C:\workspace)の下に, プロジェクトのディレクトリができる.プロジェクトのディレクトリの下には,デフォルトでは,src, bin の2つのサブディレクトリができる.

    1. プロジェクトの新規作成の開始

      ファイル」→「新規 (New)」→「プロジェクト (Project)」
      または,プロジェクト・エクスプローラ内で,右クリック→「新規 (New)」→「プロジェクト (Project)」

    2. Java」の展開

      新規プロジェクトのウインドウが開くので, 「Java」を展開する.

      [image]
    3. Java プロジェクト」の選択

      展開した「Java」の下にある 「Java プロジェクト」を選び,「次へ」をクリック.

      [image]
    4. プロジェクト名の指定

      新規Javaプロジェクトのウインドウが開くので,プロジェクト名を付ける(1行目). プロジェクト名には好きにつけて良いが,全角文字は避ける.分かりやすい名前が良い.

      [image]
    5. Java 設定

      Java 設定はデフォルトのままでよい.「終了」をクリック

      [image]
    6. パースペクティブを開く

      パースペクティブを開きたいので,「はい」をクリック

      [image]

    パッケージとクラスの作成

    パッケージ名は hoge.hoge.com のようなドメイン名を付ける習慣があることに注意してください. このページでは,パッケージ名は,hoge.hoge.com と書き, 作成するクラスのクラス名は,HelloWorld と書く.

    1. (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く

      「ウインドウ」→「ビューの表示」→「プロジェクト・エクスプローラ」 と操作する.

      パッケージの作成,クラスの作成などの作業は,プロジェクト・エクスプローラで行う.

    2. パッケージを新規作成すべきプロジェクトの選択

      プロジェクト・エクスプローラ(左側のウインドウ)を使って,パッケージを新規作成する.

      プロジェクト・エクスプローラ内にプロジェクト一覧が表示されているはずです. 先ほど作成したプロジェクトの中にパッケージを作成したいので, 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.

      [image]
    3. クラスの新規作成の開始

      プロジェクト・エクスプローラ(左側のウインドウ)を使って,クラスを新規作成する.

      新規」→「クラス」と操作する.

      ※ 「新規」を選んだとき,「クラス」が現れないことがあります. そのときは, 「新規」→「その他」→「Java」→「クラス」と操作する.

      [image]
    4. Java パッケージ名とクラス名の指定

      Java パッケージ名,クラス名を入力できるウインドウが開くので,設定を行う.

      1. 「パッケージ (package)」には,パッケージ名を書く (2行目の「パッケージのところ). ここでは,「hoge.hoge.com」と書く. ドメイン名の形で書くことになっているので注意.
      2. 「クラス名」を付ける(4行目の「名前」のところ).ここでは HelloWorld と書く.
      3. 作成するメソッド・スタブの選択」にある public static void main(String[] args)にチェックする.main メソッドをもったクラスを作るため.

        [image]

      JMagick の動作に必要なファイルを Eclipse のプロジェクトに取り込む

      jmagick.jar を,外部 JAR として追加

      1. 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
      2. プロパティー」を選ぶ
      3. 新しく現れたウインドウで,「Java のビルド・パス」→ 「ライブラリー」→ 「外部 JAR の追加」と操作する.

        [image]
      4. 先ほど jmagick-win-6.3.9-Q16.zip を解凍して出来たファイル jmagick.jar を選択. 「開く」をクリック

        [image]
      5. OK」をクリックする.

        [image]

      jmagick.dll をインポート

      1. 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
      2. インポート」を選ぶ
      3. ファイル・システム」を選び, 「次へ」をクリック

        [image]
      4. jmagick.dll」をインポート

        まず,先ほど jmagick-win-6.3.9-Q16.zip を解凍して出来たディレクトリを選ぶ. 右側の「jmagick.dll」をチェックする. 終わったら「完了」をチェックする.

        [image]

      DLL ファイルのインポート

      1. 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
      2. 再度,「インポート」を選ぶ
      3. ファイル・システム」を選び, 「次へ」をクリック

        [image]
      4. DLLファイルをインポート

        まず,先ほど C:\Program Files\ImageMagick-6.3.9-Q16を選ぶ. 左側に「ImageMagick-6.3.9-Q16」のように表示されるので,左横の「+」をクリックした後, 右側のウインドウに表示されるファイルで,拡張子が dll になっているものをすべて選ぶ. 終わったら「完了」をチェックする.

        ※ DLL を全てインポートする必要がある.そうしないと,Java プログラムの実行時にエラーが出る.

        [image]

        クラス定義

        前準備として,パッケージ hoge.hoge.com とクラス HelloWorld を新規作成済みであること.

        1. クラスファイル一覧の表示

          プロジェクト・エクスプローラで, プロジェクト名の下の 「Java リソース; src」または「src」の下を展開すると,パッケージ名 hoge.hoge.com の下に,クラスファイル一覧が出ます.

        2. 定義したいクラスのファイルを開く

          HelloWorld クラスを定義したいので, プロジェクト・エクスプローラの パッケージ名の下にあるクラスファイル一覧の中から, 「HelloWorld.java」をクリック. すると,エディタが現れる.

          このように,Eclipse のパッケージエクスプローラで,定義したいクラスの「クラス名.java」クリックすると,エディタが開くことになっています.

          [image]

          なお,別のクラスを追加したいときは, パッケージ名を右クリックして「新規」→「クラス」です.

        3. エディタでクラス定義を行う

          下記のクラス定義をカットアンドペーストしてみて下さい(テスト用に作ったクラス定義です). (パッケージ名を「hoge.hoge.com」と書いているので,パッケージ名を別の名前にしている場合には,適切に読み替えてください).

          ----------------------ここから---------------------
          package hoge.hoge.com;
          
          import magick.ImageInfo;
          import magick.MagickException;
          import magick.MagickImage;
          
          public class HelloWorld {
          
              /**
               * @param args
               */
              public static void main(String[] args) {
                  ImageInfo ii;
                  try {
                      ii = new ImageInfo("label:hoge@hoge.hoge.com");
                      /* フォント指定 */
                      ii.setFont("c:\\winnt\\fonts\\msgothic.ttc");
                      /* ポイントサイズ指定 */
                      ii.setPointSize(30);
          
                      /* ラベルに合わせて文字列画像を作成 */
                      MagickImage mi = new MagickImage(ii);
          
                      mi.setFileName("sample.png");
                      mi.writeImage(new ImageInfo());
                  } catch (MagickException e) {
                      // TODO 自動生成された catch ブロック
                      e.printStackTrace();
                  }
          
              }
          
          }
          ----------------------ここまで----------------------
          

          このプログラムは,下記のように文字列を画像化した画像ファイルを作るプログラム.ファイル名の「.png」の部分は「.jpg」などに変えることができる.

          [image]
        4. ソースを保存

          「ファイル」→「保管」または CTRL+S で保存される. 保存時にコンパイルされる

          コンパイル時のエラーや警告があれば, Eclipse 内の問題・ビューに表示されるので確認する.

          実行

          1. 実行したいクラスを選び,右クリック

            プロジェクト・エクスプローラで,パッケージ名の下にクラスファイル一覧が出ているので,実行したいクラスの「クラス名.java」 (つまり,HelloWorld.java)右クリック

          2. 実行」 → 「Javaアプリケーション (Java Application)」と操作

            ※ もしくはAlt+Shift+Xを押し,J を押すという操作でもよい.

            [image]
          3. Eclipse 画面の下の方にコンソールが立ち上がる.

            コンソールには何も表示されないが,Eclipse のワークスペースのディレクトリの下に C:\workspace\Hello\sample.png ができる.

            ※ エラーがあれば,コンソールにエラーメッセージが表示される. DLL を全てインポートする必要があるのに,間違ってもれていた,などの原因が考えられる.