JMagickとim4javaのアプローチの違い
画像加工の十徳ナイフことImageMagick。画像加工に関する大抵のことはこれ一つでできます。めっちゃ複雑なコマンドラインオプションを覚えれば、ですが。
そんなImageMagickをJavaで使う方法。有力なのはJMagickとim4javaの2つです。
両者はアプローチが違います。im4javaのWebサイトによると
- JMagick
- ImageMagickのC言語APIをJNIでラップしたもの
- low-level interfaceを直接叩くので細かな制御ができるしパフォーマンスもよい
- JNIを使うことによるリスクがある(im4javaはこれをJNI-hazardと呼んでいる1)
- im4java
- ImageMagickのコマンドを生成して
java.lang.ProcessBuilder.start()
メソッド経由でImageMagickを呼び出す - ImageMagickのコマンドラインでできることしかできない(JMagickほど細かく制御できない)
- JNI-hazardと無縁
- ImageMagickのコマンドを生成して
と、そもそもの仕組みレベルで違うんですね。ちなみにライセンスはImageMagickもim4javaもLGPLです。
ImageMagickのポテンシャルを極限まで引き出したかったらJMagick、手軽に使いたかったらim4javaという使い分けでしょうか。個人的にはJNIはシンドイのでim4javaを推したいところ。
JNI-hazardについてはim4javaのFrequently Asked Questions に詳しい説明があります ↩︎
関連(するかもしれない)記事
おススメ