im4java Publisher's description
from Bernhard Bablok
im4java is (to my knowlegde) the second java interface to ImageMagick.
im4java is (to my knowlegde) the second java interface to ImageMagick. It is not meant as a replacement for JMagick, but as an addition.
JMagick is a thin JNI layer above the ImageMagick C-API. im4java in contrast just generates the commandline for the ImageMagick commands and passes the generated line to the selected IM-command (using the java.lang.ProcessBuilder.start()-method).
Disadvantages of the approach: your are limited to the capabilities of the IM commands. With JMagick, you have access to the low-level interface of IM and therefore you have a very detailed control of the processing of images. And you have better performance.
Advantages of im4java: the interface of the IM commandline is quite stable, so your java program (and the im4java-library) will work across many versions of IM. im4java also provides a better OO interface (the "language" of the IM-commandline with it's postfix-operation notation translates very easily into OO-notation). And most important: you can use im4java everywhere JMagick can't be used because of the JNI hazard (e.g. java application servers).
* supports most ImageMagick commands
* reuse a commandline multiple times for different set of images
* IM options and operators translate into similar method-names, e.g.
-resize 1024 -> .resize(1024) or .resize(1024,null)
-resize 1024x768 -> .resize(1024,768)
-resize x768 -> .resize(null,768)
-sigmoidal-contrast 20 -> .sigmoidalContrast(20.)
-append -> .append()
+append -> .p_append()
* you can pipe input to and from ImageMagick commands
* BufferedImage support, i.e you can use BufferedImages as input to IM commands and pipe output of IM commands into a BufferedImage
* asynchronous execution of commands possible
* parallel processing of multiple input-images
* the architecture supports arbitrary commandline-tools
* supports GraphicsMagick
* supports jpegtran
* supports ufraw
* supports exiftool
* supports dcraw
What's New in This Release:* Support ImageMagick's read-modifier for image-placeholders
* Support parallel processing of images. This feature will efficiently use your multi-processor computer (note that this is mainly useful for desktop-applications). Note that the im4java-API for parallel processing is not yet considered as stable. This depends on feedback and bug-reports. I am not overly optimistic that I found and fixed all bugs and race-conditions.
* The interface org.im4java.process.ProcessListener is deprecated and is replaced with org.im4java.process.ProcessEventListener. Transition should be easy, since the interfaces are very similar. This change was necessary to support parallel processing. The old interface will be removed with the first release after beginning of 2011.
* Fixed a serious bug in the implementation which could lead to deadlocks under Windows (thanks to Jaroslav Snajdr for pointing this out and providing a patch).
* The binary-distribution now contains two versions of the im4java-jar: one for JRE 1.6, one for 1.5.
* The source-distribution will again contain all generated java-source-files.
System Requirements:No special requirements.
Program Release Status:
Program Install Support: Install and Uninstall