图片压缩工具

图片压缩、水印、旋转

Posted by Claire on January 29, 2022

一、工具

thumbnailator工具

使用maven引入,即可使用

       <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.16</version>
        </dependency>

测试功能

1.从图片创建一张缩略图,并输出到文件

以下创建一张以original.jpg为基础,大小为160*160的缩略图

Thumbnails.of(new File("original.jpg"))
        .size(160, 160)  #大小160*160
        .toFile(new File("thumbnail.jpg"));

Thumbnails.of("original.jpg")
        .size(160, 160) #大小160*160
        .toFile("thumbnail.jpg");

2.从图片创建一张带旋转和水印的缩略图

Thumbnails.of(new File("original.jpg"))
        .size(160, 160) #大小160*160
        .rotate(90)     #顺时针旋转90度
        .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f) #右下角放置水印图片,水印有50%的透明度
        .outputQuality(0.8) #输出80%压缩后的图片
        .toFile(new File("image-with-watermark.jpg"));

3.从图片创建一个压缩后的输出流

OutputStream os = ...;
		
Thumbnails.of("large-picture.jpg")
        .size(200, 200) #大小200*200
        .outputFormat("png") #输出PNG格式
        .toOutputStream(os); 

4.从图片创建一个固定大小的缩略图

BufferedImage originalImage = ImageIO.read(new File("original.png"));

BufferedImage thumbnail = Thumbnails.of(originalImage)
        .size(200, 200)
        .asBufferedImage();

5.从图片创建一个通过默认缩放技术实现的指定比例的压缩流

BufferedImage originalImage = ImageIO.read(new File("original.png"));

BufferedImage thumbnail = Thumbnails.of(originalImage)
        .scale(0.25) #25%压缩
        .asBufferedImage();

6.从图片创建一个缩略图,输出到另一个目录,并自动重命名

File destinationDir = new File("path/to/output");

Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg")
        .size(200, 200)
        .toFiles(destinationDir, Rename.PREFIX_DOT_THUMBNAIL); #新文件名会追加thumbnail.的前缀

也可以不进行重命名,使用原有名称

File destinationDir = new File("path/to/output");

Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg")
        .size(200, 200)
        .toFiles(destinationDir, Rename.NO_CHANGE); #不进行重命名