What is the best java image processing library/approach?
There's ImageJ, which boasts to be the
world's fastest pure Java image processing program
It can be used as a library in another application. It's architecture is not brilliant, but it does basic image processing tasks.
I know this question is quite old, but as new software comes out it does help to get some new links to projects that might be interesting for folks.
imgscalr is pure-Java image resizing (and simple ops like padding, cropping, rotating, brighten/dimming, etc.) library that is painfully simple to use - a single class consists of a set of simple graphics operations all defined as static methods that you pass an image and get back a result.
The most basic example of using the library would look like this:
BufferedImage thumbnail = Scalr.resize(image, 150);
And a more typical usage to generate image thumbnails using a few quality tweaks and the like might look like this:
import static org.imgscalr.Scalr.*;
public static BufferedImage createThumbnail(BufferedImage img) {
// Create quickly, then smooth and brighten it.
img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);
// Let's add a little border before we return result.
return pad(img, 4);
}
All image-processing operations use the raw Java2D pipeline (which is hardware accelerated on major platforms) and won't introduce the pain of calling out via JNI like library contention in your code.
imgscalr has also been deployed in large-scale productions in quite a few places - the inclusion of the AsyncScalr class makes it a perfect drop-in for any server-side image processing.
There are numerous tweaks to image-quality you can use to trade off between speed and quality with the highest ULTRA_QUALITY mode providing a scaled result that looks better than GIMP's Lancoz3 implementation.