Create image thumbnail in java using ImageJ API

For more information on how to implement Photos sharing website using Java, Spring, Tomcat, Imagej download Fotovault (opensource Photo sharing project) Fotovault - Photo Sharing Project

Below is the code example to create thumbnails in Java.

Download ImageJ jar from

http://rsbweb.nih.gov/ij/download.html

and include it in your classpath.

The below code example proportionately/evenly crops the image to make the image a perfect square and creates a thumbnail of 100 X 100 pixels.

cropAndResize method takes the fileAbsolutePath and Save as image suffix (thumbnail name suffix).

private String cropAndResize(String fileAbsolutePath, String fileSaveAsNameSuffix) {

try {

Opener opener = new Opener();

ImagePlus imp = opener.openImage(fileAbsolutePath);

ImageProcessor ip = imp.getProcessor();

StackProcessor sp = new StackProcessor(imp.getStack(), ip);

int width = imp.getWidth();

int height = imp.getHeight();

int cropWidth = 0;

int cropHeight = 0;

if(width > height) {

cropWidth = height;

cropHeight = height;

} else {

cropWidth = width;

cropHeight = width;

}

int x = -1;

int y = -1;

if(width == height) {

x = 0;

y = 0;

} else if(width > height) {

x = (width - height) / 2;

y=0;

} else if (width < height) {

x = 0;

y = (height - width) / 2;

}

logger.debug(imp.getWidth());

logger.debug(imp.getHeight());

logger.debug("cropWidth " + cropWidth);

logger.debug("cropHeight" + cropHeight);

ImageStack croppedStack = sp.crop(x, y, cropWidth, cropHeight);

imp.setStack(null, croppedStack);

logger.debug(imp.getWidth());

logger.debug(imp.getHeight());

sp = new StackProcessor(imp.getStack(), imp.getProcessor());

ImageStack resizedStack = sp.resize(100, 100, true);

imp.setStack(null, resizedStack);

StringBuffer filePath = new StringBuffer(fileAbsolutePath);

filePath.replace(filePath.lastIndexOf("."),

filePath.lastIndexOf("."), fileSaveAsNameSuffix);

String saveAsFilePath = filePath.toString();

IJ.save(imp, saveAsFilePath);

return saveAsFilePath;

} catch (Exception e) {

logger.error("Error while resizing Image.");

e.printStackTrace();

return null;

}

}