Java から ImageMagick の機能を使う(JMagick を使用)
このページでは,ImageMagick と JMagick と Eclipse を使い, 画像ファイルの書き込みを行う Java プログラムを作る手順を図解で説明する.JMagick のインストール手順も説明する. (画像ファイルの読み出しについては,別の Web ページに例を示している).
- ImageMagick をインストールする
- Eclipse を使って Java プログラムを作る.このとき,JMagick をインポートする
【関連する外部ページ】
http://kyle-in-jp.blogspot.com/search/label/JMagick : JMagick を使った画像処理プログラムの見本が載ったすばらしい Web ページ
必要となるソフトウェア
- Eclipse のWebページの記述に従って,Eclipse のインストールが終わっていること.
設定項目
前もって,Eclipse インストールディレクトリを調べておいてください このページでは,次のように書く.
- Eclipse インストールディレクトリ: C:\Program Files\eclipse3.5\
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 のダウンロードサイトから入手することにします.
- ImageMagick の web ページを開く
- 「JMagick」をクリック
- 「JMagick」をクリックして,JMagick の Web ページに飛ぶ
- 「Downloads」をクリックして,JMagick のダウンロード説明 Web ページに飛ぶ
- 「downloads.jmagick.org」をクリックして,JMagick のダウンロード用 Web ページに飛ぶ
- バージョン「6.3.9」をクリック
* 6.4.0 をクリックすると,ソースコードはあるが Window 用のバイナリファイルがない(2009//01時点).
- ファイルのダウンロード
次のファイルをダウンロード.(ImageMagick と JMagick の両方)
- ImageMagick-6.3.9-0-Q16-windows-dll.exe
- jmagick-win-6.3.9-Q16.zip
- jmagick-win-6.3.9-Q16.zip の解凍
解凍して,分かりやすいディレクトリに置いておくこと.展開(解凍)すると次のようなファイルができる.
ImageMagick のインストール
- 先ほどダウンロードした ImageMagick-6.3.9-0-Q16-windows-dll.exeを実行
- ようこそ画面
「Next」をクリック.
- ライセンス条項
ライセンス条項に同意するので「I accept the agreement」をチェックする. その後,「Next」をクリック.
- お知らせ
「Next」をクリック.
- インストールディレクトリ
インストールディレクトリはこのままでよい.「Install」をクリック.
- スタートメニューフォルダ
スタートメニューフォルダは,デフォルト (ImageMagick 6.3.9 Q16) のままでよい.「Next」をクリック.
- 追加タスクの設定
「Install development headers and libraries for C and C++」をチェックし,「Next」をクリック.
- インストールの開始
「Install」をクリック.
- インストール中
- お知らせ
「Next」をクリック.
- インストールの終了
「Finish」をクリック.
- 環境変数の確認
「追加タスクの設定」で,「Update executable search path」のチェックを付けたままにしておいた場合,環境変数 PATH を自動で設定することに注意. 環境変数 PATH の先頭に, 「C:\Program Files\ImageMagick6.3.9;」が自動的に追加される.
Eclipse で JMagick プログラムを動かしてみる
Eclipse で,新規プロジェクトの作成,HelloWorld クラス作成を行う.
あらかじめ決めておく事項
- プロジェクト名: HelloWorld
- パッケージ名: hoge.hoge.com
- メインとなるクラス名: HelloWorld
プロジェクトの新規作成
下記の手順で,プロジェクトを新規に作成する.
プロジェクトを作成すると,ワークスペースのディレクトリ(C:\workspace)の下に, プロジェクトのディレクトリができる.プロジェクトのディレクトリの下には,デフォルトでは,src, bin の2つのサブディレクトリができる.
- プロジェクトの新規作成の開始
「ファイル」→「新規 (New)」→「プロジェクト (Project)」
または,プロジェクト・エクスプローラ内で,右クリック→「新規 (New)」→「プロジェクト (Project)」 - 「Java」の展開
新規プロジェクトのウインドウが開くので, 「Java」を展開する.
- 「Java プロジェクト」の選択
展開した「Java」の下にある 「Java プロジェクト」を選び,「次へ」をクリック.
- プロジェクト名の指定
新規Javaプロジェクトのウインドウが開くので,プロジェクト名を付ける(1行目). プロジェクト名には好きにつけて良いが,全角文字は避ける.分かりやすい名前が良い.
- Java 設定
Java 設定はデフォルトのままでよい.「終了」をクリック
- パースペクティブを開く
パースペクティブを開きたいので,「はい」をクリック
パッケージとクラスの作成
パッケージ名は hoge.hoge.com のようなドメイン名を付ける習慣があることに注意してください. このページでは,パッケージ名は,hoge.hoge.com と書き, 作成するクラスのクラス名は,HelloWorld と書く.
- (もし,プロジェクト・エクスプローラが開いていなければ)プロジェクト・エクスプローラを開く
「ウインドウ」→「ビューの表示」→「プロジェクト・エクスプローラ」 と操作する.
パッケージの作成,クラスの作成などの作業は,プロジェクト・エクスプローラで行う.
- パッケージを新規作成すべきプロジェクトの選択
プロジェクト・エクスプローラ(左側のウインドウ)を使って,パッケージを新規作成する.
プロジェクト・エクスプローラ内にプロジェクト一覧が表示されているはずです. 先ほど作成したプロジェクトの中にパッケージを作成したいので, 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
- クラスの新規作成の開始
プロジェクト・エクスプローラ(左側のウインドウ)を使って,クラスを新規作成する.
「新規」→「クラス」と操作する.
* 「新規」を選んだとき,「クラス」が現れないことがあります. そのときは, 「新規」→「その他」→「Java」→「クラス」と操作する.
- Java パッケージ名とクラス名の指定
Java パッケージ名,クラス名を入力できるウインドウが開くので,設定を行う.
- 「パッケージ (package)」には,パッケージ名を書く (2行目の「パッケージのところ). ここでは,「hoge.hoge.com」と書く. ドメイン名の形で書くことになっているので注意.
- 「クラス名」を付ける(4行目の「名前」のところ).ここでは HelloWorld と書く.
- 「作成するメソッド・スタブの選択」にある public static void main(String[] args)にチェックする.main メソッドをもったクラスを作るため.
JMagick の動作に必要なファイルを Eclipse のプロジェクトに取り込む
jmagick.jar を,外部 JAR として追加
- 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
- 「プロパティー」を選ぶ
- 新しく現れたウインドウで,「Java のビルド・パス」→
「ライブラリー」→
「外部 JAR の追加」と操作する.
- 先ほど jmagick-win-6.3.9-Q16.zip を解凍して出来たファイル jmagick.jar を選択.
「開く」をクリック
- 「OK」をクリックする.
jmagick.dll をインポート
- 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
- 「インポート」を選ぶ
- 「ファイル・システム」を選び,
「次へ」をクリック
- 「jmagick.dll」をインポート
まず,先ほど jmagick-win-6.3.9-Q16.zip を解凍して出来たディレクトリを選ぶ. 右側の「jmagick.dll」をチェックする. 終わったら「完了」をチェックする.
DLL ファイルのインポート
- 先ほど作成したプロジェクトのプロジェクト名(つまり HelloWorld)を選んで右クリック.
- 再度,「インポート」を選ぶ
- 「ファイル・システム」を選び,
「次へ」をクリック
- DLLファイルをインポート
まず,先ほど C:\Program Files\ImageMagick-6.3.9-Q16を選ぶ. 左側に「ImageMagick-6.3.9-Q16」のように表示されるので,左横の「+」をクリックした後, 右側のウインドウに表示されるファイルで,拡張子が dll になっているものをすべて選ぶ. 終わったら「完了」をチェックする.
* DLL を全てインポートする必要がある.そうしないと,Java プログラムの実行時にエラーが出る.
クラス定義
前準備として,パッケージ hoge.hoge.com とクラス HelloWorld を新規作成済みであること.
- クラスファイル一覧の表示
プロジェクト・エクスプローラで, プロジェクト名の下の 「Java リソース; src」または「src」の下を展開すると,パッケージ名 hoge.hoge.com の下に,クラスファイル一覧が出ます.
- 定義したいクラスのファイルを開く
HelloWorld クラスを定義したいので, プロジェクト・エクスプローラの パッケージ名の下にあるクラスファイル一覧の中から, 「HelloWorld.java」をクリック. すると,エディタが現れる.
このように,Eclipse のパッケージエクスプローラで,定義したいクラスの「クラス名.java」 をクリックすると,エディタが開くことになっています.
なお,別のクラスを追加したいときは, パッケージ名を右クリックして「新規」→「クラス」です.
- エディタでクラス定義を行う.
下記のクラス定義をカットアンドペーストしてみて下さい(テスト用に作ったクラス定義です). (パッケージ名を「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」などに変えることができる.
- ソースを保存
「ファイル」→「保管」または CTRL+S で保存される. 保存時にコンパイルされる
コンパイル時のエラーや警告があれば, Eclipse 内の問題・ビューに表示されるので確認する.
実行
- 実行したいクラスを選び,右クリック
プロジェクト・エクスプローラで,パッケージ名の下にクラスファイル一覧が出ているので,実行したいクラスの「クラス名.java」 (つまり,HelloWorld.java) を右クリック.
- 「実行」 → 「Javaアプリケーション (Java Application)」と操作
* もしくはAlt+Shift+Xを押し,J を押すという操作でもよい.
- Eclipse 画面の下の方にコンソールが立ち上がる.
コンソールには何も表示されないが,Eclipse のワークスペースのディレクトリの下に C:\workspace\Hello\sample.png ができる.
* エラーがあれば,コンソールにエラーメッセージが表示される. DLL を全てインポートする必要があるのに,間違ってもれていた,などの原因が考えられる.