ImageMagickInfo imInfo = ImageMagick.getInfo();
// Get information about image
ImageInfo imageInfo = null;
if( imInfo.isAvailable ){
ImageMagickProcessor imageMagick = imInfo.getProcessor();
imageInfo = imageMagick.getImageInfo( inFile );
}
boolean conversionRequired = false;
boolean resizeRequired = false;
boolean reorientationRequired = false;
if( null != imageInfo ) {
request.setInHeight( imageInfo.height );
request.setInWidth( imageInfo.width );
request.setExifData( imageInfo.exif );
// Check if conversion is required
conversionRequired = imageConversionThreshold.isConversionRequired(
imageInfo.format
,null
,null
,null
,new Long(imageInfo.width)
,new Long(imageInfo.height)
);
resizeRequired = imageConversionThreshold.isResizeRequired(
new Long(imageInfo.width)
,new Long(imageInfo.height)
);
if( imageInfo.orientation == ImageInfo.Orientation.REQUIRES_CONVERSION ) {
reorientationRequired = true;
}
}
String outputExtension = getExtensionFromImageFormat(imageInfo.format);
if( null == outputExtension ){
outputExtension = "jpg";
}
if( request.isSkipConversion() ){
progress.updateProgress(100);
} else if( false == conversionRequired
&& false == resizeRequired
&& false == reorientationRequired
) {
// Conversion not required, converted file is the uploaded file
// Same applies if conversion is impossible because ImageMagick
// is not present.
request.setOutFile(inFile);
progress.updateProgress(100);
} else {
File outFile = request.getOutFile();
if( null == outFile ) {
File parentDir = inFile.getParentFile();
outFile = File.createTempFile("conv", "."+outputExtension, parentDir);
}
ImageMagickProcessor im = imInfo.getProcessor(progress);
if( resizeRequired ) {
im.resizeImage(imageInfo, outFile, IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT);
} else if(conversionRequired) {
im.convertImage(imageInfo, outFile);
} else {
im.reorientImage(imageInfo, outFile);
}
request.setOutFile(outFile);
request.setConversionPerformed(true);
ImageInfo outImageInfo = im.getImageInfo( outFile );
request.setOutHeight( outImageInfo.height );
request.setOutWidth( outImageInfo.width );
}
// Create thumbnail
if( null != imageInfo && request.isThumbnailRequested() ){
File thumbnailFile = request.getThumbnailFile();
if( null == thumbnailFile ) {
File parentDir = inFile.getParentFile();
String name = inFile.getName();
int index = name.lastIndexOf('.');
if( index > 0 ) {
name = name.substring(0, index);
}
name = name+"_thumb."+outputExtension;
thumbnailFile = new File(parentDir, name);
}
ImageMagickProcessor im = imInfo.getProcessor(progress);
im.resizeImage(imageInfo, thumbnailFile, IMAGE_THUMB_WIDTH, IMAGE_THUMB_HEIGHT);
request.setThumbnailFile(thumbnailFile);
request.setThumbnailCreated(true);
ImageInfo thumbImageInfo = im.getImageInfo( thumbnailFile );
request.setThumbnailHeight( thumbImageInfo.height );
request.setThumbnailWidth( thumbImageInfo.width );
}
}