一,简单压缩(速度快)
public static void main(String[] args) {
TimeInterval timer = DateUtil.timer();
try {
String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println(basePath);
File input = new File(basePath+"static/9.jpg");
BufferedImage image = ImageIO.read(input);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = (ImageWriter) writers.next();
File compressedImageFile = new File("yasuo9.jpg");
OutputStream os = new FileOutputStream(compressedImageFile);
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.1f);
writer.write(null, new IIOImage(image, null, null), param);
os.close();
ios.close();
writer.dispose();
} catch (IOException e) {
e.printStackTrace();
}
System.err.println( timer.intervalMs());
}
二、可添水印、设置长宽,等比缩小,添加缩略图等(速度稍微慢点)
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.18</version>
</dependency>
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.6</version>
</dependency>
public static void main(String[] args) throws IOException {
TimeInterval timer = DateUtil.timer();
try {
String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println(basePath);
// Thumbnails.of(new File(basePath+"static/5.jpg"))
// .size(300, 400).watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(
// "F:/intellij idea3/target/classes/timg.jpg")),0.1f)
// .outputQuality(0.8f).toFile("6.jpg");
Thumbnails.of(new File(basePath+"static/9.jpg")).scale(1f).outputQuality(0.1f).toFile("7.jpg");
} catch (IOException e) {
e.printStackTrace();
}
System.err.println( timer.intervalMs());
}