Thumbnailator的简介和使用示例

什么是Thumbnailator?

Thumbnailator是Java的缩略图生成库。

为什么使用Thumbnailator?

用Java制作高质量的缩略图可能是一项相当困难的任务。

学习如何使用图像I / O API,Java 2D API,图像处理,图像缩放技术,但不要担心!Thumbnailator将为您处理所有这些事情!

Thumbnailator是单个JAR文件,不依赖于外部库,从而使开发和部署变得简单而容易。它也可以在Maven中央存储库中找到,以便轻松包含在Maven项目中。

使用示例:

首先maven引入jar文件

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

示例1:

在目录中创建图像文件的JPEG缩略图,将它们全部调整为最大尺寸为640像素乘480像素,同时保留原始图像的长宽比。

    public static void main(String[] args) throws IOException {
        String filePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator";
        Thumbnails.of(new File(filePath).listFiles())
                .size(640, 480)
                .outputFormat("jpg")
                .toFiles(Rename.PREFIX_DOT_THUMBNAIL);
    }

效果
在这里插入图片描述

Thumbnailator提供的流畅接口简化了将缩略图制作为单个方法调用的任务!

无需访问Image I / O API并BufferedImage通过Graphics2D对象手动操作。Thumbnailator为您完成所有这些工作。

示例二:

从图像文件创建缩略图:将Img1.jpg调整图片的大小,然后保存到Img1_thumbnail.jpg。

    public static void main(String[] args) throws IOException {
        String filePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img1.jpg";
        String newFilePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img1_thumbnail.jpg";
        Thumbnails.of(new File(filePath))
                .size(640, 480)
                .toFile(new File(newFilePath));
    }

在这里插入图片描述
或者,Img1_thumbnail将接受文件名作为String。File不需要使用对象来指定图像文件:

    public static void main(String[] args) throws IOException {
        String filePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img1.jpg";
        String newFilePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img1_thumbnail.jpg";
        Thumbnails.of(filePath)
                .size(640, 480)
                .toFile(newFilePath);

在编写快速的原型代码时,或者在脚本语言中使用Thumbnailator时,此格式很有用。

示例三:

创建带有旋转和水印的缩略图

        String filePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img1.jpg";
        String newFilePath = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img1_thumbnail.jpg";
        String watermark = "C:\\Users\\shunli\\Desktop\\Thumbnailator\\Img2.jpg";
        Thumbnails.of(new File(filePath))
                .size(640, 480)
                .rotate(90)//顺时针旋转90度
                .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(watermark)), 0.7f)//水印
                .outputQuality(0.8)
                .toFile(new File(newFilePath));
    }

在此示例中,将Img1.jpg调整图片的大小,然后将其顺时针旋转90度,然后在右下角放置半透明(0.7f)的水印,然后将其保存为Img1_thumbnail.jpg 80%的压缩质量设置。

示例四:

创建缩略图并写入 OutputStream

OutputStream os = ...;
		
Thumbnails.of("large-picture.jpg")
        .size(200, 200)
        .outputFormat("png")
        .toOutputStream(os);

在此示例中,文件中的图像large-picture.jpg被调整为最大尺寸为200 x 200(保持原始图像的纵横比),并将该图像写入指定OutputStream的PNG图像中。

示例五

创建固定大小的缩略图

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

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

上面的代码使用拍摄图像,originalImage并使用创建一个200像素乘200像素的缩略图,并将结果存储在中thumbnail。

示例六:

按给定因子缩放图像

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

BufferedImage thumbnail = Thumbnails.of(originalImage)
        .scale(0.25)
        .asBufferedImage();

上面的代码将图像originalImage导入,并创建一个占原始图像25%的缩略图,并使用默认的缩放技术以制作存储在中的缩略图thumbnail。

示例七:

创建缩略图时旋转图像

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

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

上面的代码获取原始图像并创建一个缩略图,该缩略图将顺时针旋转90度。

示例八:

创建带有水印的缩略图

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

BufferedImage thumbnail = Thumbnails.of(originalImage)
        .size(200, 200)
        .watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.5f)
        .asBufferedImage();

如图所示,可以通过调用该watermark方法将水印添加到缩略图。

可以从Positions枚举中选择位置。

可以通过更改最后一个参数来调整缩略图的不透明度(或相反,透明度),最后一个参数0.0f是缩略图完全透明,而1.0f水印则完全不透明。

示例九:

将缩略图写入特定目录

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

Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg")
        .size(200, 200)
        .toFiles(destinationDir, Rename.PREFIX_DOT_THUMBNAIL);

本示例将获取源图像,并将缩略图作为文件写到destinationDir(path/to/output目录),同时thumbnail.以文件名开头重命名它们。

因此,缩略图将作为文件写入:

path/to/output/thumbnail.apple.jpg
path/to/output/thumbnail.banana.jpg
path/to/output/thumbnail.cherry.jpg

在写入指定目录时,还可以保留原始文件名:

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

Thumbnails.of("apple.jpg", "banana.jpg", "cherry.jpg")
        .size(200, 200)
        .toFiles(destinationDir, Rename.NO_CHANGE);

在上面的代码中,缩略图将被写入:

path/to/output/apple.jpg
path/to/output/banana.jpg
path/to/output/cherry.jpg

发布了33 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shunli008/article/details/103753243