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」をクリック
  3. JMagick」をクリックして,JMagick の Web ページに飛ぶ
  4. Downloads」をクリックして,JMagick のダウンロード説明 Web ページに飛ぶ
  5. downloads.jmagick.org」をクリックして,JMagick のダウンロード用 Web ページに飛ぶ
  6. バージョン「6.3.9」をクリック

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

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

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

    • ImageMagick-6.3.9-0-Q16-windows-dll.exe
    • jmagick-win-6.3.9-Q16.zip
  8. jmagick-win-6.3.9-Q16.zip の解凍

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

ImageMagick のインストール

  1. 先ほどダウンロードした ImageMagick-6.3.9-0-Q16-windows-dll.exeを実行
  2. ようこそ画面

    Next」をクリック.

  3. ライセンス条項

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

  4. お知らせ

    Next」をクリック.

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

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

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

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

  7. 追加タスクの設定

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

  8. インストールの開始

    Install」をクリック.

  9. インストール中
  10. お知らせ

    Next」をクリック.

  11. インストールの終了

    Finish」をクリック.

  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」を展開する.

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

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

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

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

  5. Java 設定

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
  2. プロパティー」を選ぶ
  3. 新しく現れたウインドウで,「Java のビルド・パス」→ 「ライブラリー」→ 「外部 JAR の追加」と操作する.
  4. 先ほど jmagick-win-6.3.9-Q16.zip を解凍して出来たファイル jmagick.jar を選択. 「開く」をクリック
  5. OK」をクリックする.

jmagick.dll をインポート

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

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

DLL ファイルのインポート

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

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

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

クラス定義

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

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

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

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

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

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

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

  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」などに変えることができる.

  4. ソースを保存

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

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

実行

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

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

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

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

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

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

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