Why can't my Java class be this challenging.
import java.io.*;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
class AspectRatio {
public static void main(String args[]) {
File file = new File("path");
try {
FileInputStream fis = new FileInputStream(file);
InputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = null;
Image image = (Image)ImageIO.read(bis);
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
int thumbWidth = 100;//Specify image width in px
int thumbHeight = 100;//Specify image height in px
double thumbRatio = (double)thumbWidth/(double)thumbHeight;
double imageRatio = (double)imageWidth/(double)imageHeight;
if(thumbRatio<imageRatio) {
thumbHeight = (int) (thumbWidth/imageRatio);
} else {
thumbWidth = (int) (thumbHeight*imageRatio);
}
BufferedImage thumbImage =
new BufferedImage(thumbWidth,thumbHeight,BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = thumbImage.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics.drawImage(image,0, 0, thumbWidth, thumbHeight,null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
int look = 100;
look = Math.max(0,Math.min(quality,100));
param.setQuality((float)quality/100.0f,false);
String format = "jpg";
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
ImageIO.write(thumbImage,format, new File("path"));
} catch(IOException ioExcep) {
ioExcep.printStackTrace();
}catch(Exception excep) {
excep.printStackTrace();
}
}
}