之前使用JPEGCodec做图像缩放,效果蛮好的,但它从jdk1.7开始就被删除了,在eclipse里的时候可以通过设置来让它可以运行,但部署到服务器上的时候出现了找不到类情况。
于是乎去寻找其他方案,就找到了mortennobel包,结合ImageIO对图片处理
maven:
com.mortennobel
java-image-scaling
0.8.6
图片缩放:
public static void resize(File originalFile, File resizedFile,int newWidth, int newHeight, String formatName) {
try {
BufferedImage inputBufImage = ImageIO.read(originalFile);
ResampleOp resampleOp = new ResampleOp(newWidth, newHeight);// 转换
BufferedImage rescaledTomato = resampleOp.filter(inputBufImage,null);
ImageIO.write(rescaledTomato, formatName, resizedFile);
} catch (IOException e) {
e.printStackTrace();
}
}
图片切割:
public final static void cut(File srcImageFile, File result, int x, int y,int width, int height, String formatName) {
ImageInputStream iis = null;
try {
iis = ImageIO.createImageInputStream(srcImageFile);
Iterator iterator = ImageIO.getImageReaders(iis);
ImageReader reader = (ImageReader) iterator.next();
reader.setInput(iis, true);
ImageReadParam param = reader.getDefaultReadParam();
Rectangle rectangle = new Rectangle(x, y, width, height);
param.setSourceRegion(rectangle);
BufferedImage bi = reader.read(0, param);
ImageIO.write(bi, formatName, result);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (iis != null) {
try {
iis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
formatName就是像PNG,JPEG这样的文件后缀名。