backport

技術ネタと野球とときどき雑談

JMagickとim4javaのアプローチの違い

2017/05/06
development Java, im4java

画像加工の十徳ナイフことImageMagick。画像加工に関する大抵のことはこれ一つでできます。めっちゃ複雑なコマンドラインオプションを覚えれば、ですが。

そんなImageMagickをJavaで使う方法。有力なのはJMagickim4javaの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もim4javaもLGPLです。

ImageMagickのポテンシャルを極限まで引き出したかったらJMagick、手軽に使いたかったらim4javaという使い分けでしょうか。個人的にはJNIはシンドイのでim4javaを推したいところ。


  1. JNI-hazardについてはim4javaのFrequently Asked Questions に詳しい説明があります [return]


コメント欄を表示する

おススメ

WEB+DB PRESS Vol.99

特集「良いコードって何だろう?」がおススメ

WEB+DB PRESS総集編[Vol.1~84] (WEB+DB PRESS plus)

お値段手ごろなので持っておいて損なし

Kindle Paperwhite Wi-Fi、ブラック

読みたいときに読みたい本を読めるのが嬉しい

超小型65W ノートPC汎用 ACアダプター FINsix ”Dart” (シルバー)超軽量85g 11種類の変換プラグで1000機種以上のノートPCに対応 USB5V出力付きでPCとスマホ同時充電 ※必ずご使用のPCとの互換性をご確認ください。『PSE認証済』

持ち運びに便利な小型軽量のACアダプタ