1. Thumbnailator是一个用java生成高质量缩略图的第三方库,可以用来
1.生成缩率图;
2.添加水印;
3.图片旋转;
4.图片大小缩放;
5.图片压缩;
4.thumbnailator库只有一个jar,不依赖第三方库,maven依赖
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
5.简单使用
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
import net.coobird.thumbnailator.name.Rename;
import net.coobird.thumbnailator.resizers.configurations.ScalingMode;
import org.apache.pdfbox.tools.imageio.ImageIOUtil;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* @author lcj
* @version 1.0
* @description 生成缩略图和水印非常好用,具体帮助文档 https://github.com/coobird/thumbnailator/wiki/Maven
* 缩略图
* 水印
* 选择
* 格式转换
* @Create 2017-08-03
*/
public class ThumbnailatorDmo {
public static void main(String[] args) {
}
/**
* 使用给定的图片生成指定大小的图片
*/
private static void generateFixedSizeImage(){
try {
Thumbnails.of("data/meinv.jpg").size(80,80).toFile("data/newmeinv.jpg");
} catch (IOException e) {
System.out.println("原因: " + e.getMessage());
}
}
/**
* 对原图加水印,然后顺时针旋转90度,最后压缩为80%保存
*/
private static void generateRotationWatermark(){
try {
Thumbnails.of("data/2016010208.jpg").
size(160,160).
rotate(90).
watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("data/newmeinv.jpg")),0.5f).
outputQuality(0.8).
toFile("data/2016010208_new.jpg");
} catch (IOException e) {
System.out.println("原因: " + e.getMessage());
}
}
/**
* 转换图片格式,将流写入到输出流
*/
private static void generateOutputstream(){
try(OutputStream outputStream = new FileOutputStream("data/2016010208_outputstream.png")) {
Thumbnails.of("data/2016010208.jpg").
size(500,500).
outputFormat("png").
toOutputStream(outputStream);
} catch (IOException e) {
System.out.println("原因: " + e.getMessage());
}
}
/**
* 按比例缩放图片
*/
private static void generateScale(){
try {
Thumbnails.of("data/2016010208.jpg").
scale(0.8).
outputQuality(0.8).
toFile("data/2016010208_scale.jpg");
} catch (IOException e) {
System.out.println("原因: " + e.getMessage());
}
}
/**
* 生成缩略图到指定的目录
*/
private static void generateThumbnail2Directory(){
try {
Thumbnails.of("data/2016010208.jpg","data/meinv.jpg").
scale(0.8).
toFiles(new File("data/new/"), Rename.NO_CHANGE);
} catch (IOException e) {
System.out.println("原因: " + e.getMessage());
}
}
/**
* 将指定目录下所有图片生成缩略图
*/
private static void generateDirectoryThumbnail(){
try {
Thumbnails.of(new File("data/new").listFiles()).
scale(0.8).
toFiles(new File("data/new/"), Rename.SUFFIX_HYPHEN_THUMBNAIL);
} catch (IOException e) {
System.out.println("原因: " + e.getMessage());
}
}
}
7.总结:Thumbnialator是一个链式风格写法的接口,非常简单易用上手,功能强大.