ImageMagickInfo imInfo = ImageMagick.getInfo();
// Get information about image
ImageInfo imageInfo = null;
if( imInfo.isAvailable ){
ImageMagick ffmpeg = new ImageMagick();
imageInfo = ffmpeg.getImageInfo( fileInfo.getUploadedFile() );
}
// Check if conversion is required
boolean conversionRequired = false;
boolean resizeRequired = false;
if( null != imageInfo ) {
if( imageInfo.width > IMAGE_MAX_WIDTH ) {
resizeRequired = true;
} else if( imageInfo.height > IMAGE_MAX_HEIGHT ) {
resizeRequired = true;
}
if( false == "JPEG".equals( imageInfo.format ) ) {
conversionRequired = true;
}
}
if( false == conversionRequired && false == resizeRequired ) {
// Conversion not required, converted file is the uploaded file
// Same applies if conversion is impossible because ImageMagick
// is not present.
fileInfo.setConvertedFile( fileInfo.getUploadedFile() );
} else {
File inputFile = fileInfo.getUploadedFile();
File parentDir = inputFile.getParentFile();
File outputFile = File.createTempFile("conv", ".jpg", parentDir);
FFmpegProgressImpl progress = new FFmpegProgressImpl(progressId,1);
ImageMagick im = new ImageMagick(progress);
if( resizeRequired ) {
im.resizeImage(imageInfo, outputFile, IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT);
} else {
im.convertImage(imageInfo, outputFile);
}
fileInfo.setConvertedFile(outputFile);
}
// Create thumbnail
if( null != imageInfo ) {
File inputFile = fileInfo.getConvertedFile();
File parentDir = inputFile.getParentFile();
String name = inputFile.getName();
int index = name.lastIndexOf('.');
if( index > 0 ) {
name = name.substring(0, index);
}
name = name+"_thumb.png";
File outputFile = new File(parentDir, name);
ImageMagick im = new ImageMagick();
im.resizeImage(imageInfo, outputFile, IMAGE_THUMB_WIDTH, IMAGE_THUMB_HEIGHT);
}
}