Thumbnailator一个用于Java的缩略图生成库

什么是 Thumbnailator?


Thumbnailator

Thumbnailator 是一个用于 Java 的缩略图生成库。

为什么选择 Thumbnailator?

  • 在 Java 中制作高质量的缩略图可能是一项相当艰巨的任务。
  • 学习如何使用图像 I/O API、Java 2D API、图像处理、
  • 图像缩放技术……等等。但别担心!Thumbnailator 将为您解决所有这些问题!
  • Thumbnailator 是一个独立的 JAR 文件,不依赖任何外部库,这使得开发和部署变得简单轻松。它还可以在Maven 中央仓库中找到,方便集成到 Maven 项目中。

Thumbnailator 有多简单?

Thumbnailator 的流畅界面可以让你一步完成相当复杂的缩略图处理任务。例如,要创建目录中所有图像文件的 JPEG 缩略图,并将所有缩略图调整到最大尺寸 640 像素 x 480 像素,同时保持原始图像的宽高比,可以通过以下步骤完成:

java 复制代码
Thumbnails.of(new File("path/to/directory").listFiles())
    .size(640, 480)
    .outputFormat("jpg")
    .toFiles(Rename.PREFIX_DOT_THUMBNAIL);

Thumbnailator 提供的流畅接口将创建缩略图的任务简化为只需一次方法调用即可完成!

无需访问图像 I/O API 并通过 Graphics2D 对象手动操作 BufferedImageThumbnailator 会为您完成所有这些操作。

更多示例

从图像文件创建缩略图

java 复制代码
Thumbnails.of(new File("original.jpg"))
        .size(160, 160)
        .toFile(new File("thumbnail.jpg"));

在这个例子中,原始图像 original.jpg 被调整大小,然后保存为 thumbnail.jpg。

此外,Thumbnailator 也接受以字符串形式指定的文件名。无需使用 File 对象来指定图像文件。

java 复制代码
Thumbnails.of("original.jpg")
        .size(160, 160)
        .toFile("thumbnail.jpg");

这种形式在编写快速原型代码时非常有用,或者在脚本语言中使用 Thumbnailator 时也很有用。

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

java 复制代码
Thumbnails.of(new File("original.jpg"))
        .size(160, 160)
        .rotate(90)
        .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f)
        .outputQuality(0.8)
        .toFile(new File("image-with-watermark.jpg"));

在这个例子中,原始图像 original.jpg 被调整大小,然后顺时针旋转 90 度,然后在右下角放置一个半透明的水印,最后以 80% 的压缩质量设置保存为 image-with-watermark.jpg。

创建缩略图并写入输出流

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

在这个例子中,文件 large-picture.jpg 中的图像被调整为最大尺寸 200 x 200(保持原始图像的宽高比),并将其作为 PNG 图像写入指定的 OutputStream。

通过指定尺寸创建缩略图

java 复制代码
BufferedImage originalImage = ImageIO.read(new File("original.png"));

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

上面的代码将原始图像存储在 originalImage 中,并创建一个 200 像素 x 200 像素的缩略图,并将结果存储在 thumbnail 中。

将图像按给定比例缩放

java 复制代码
BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage thumbnail = Thumbnails.of(originalImage)
        .scale(0.25)
        .asBufferedImage();

上面的代码获取原始图像中的图像,并创建一个大小为原始图像 25% 的缩略图,并使用默认缩放技术来生成存储在 thumbnail 中的缩略图。

强制缩略图尺寸必须完全符合指定要求

java 复制代码
BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage thumbnail = Thumbnails.of(originalImage)
        .size(200, 200)
        .keepAspectRatio(false)
        .asBufferedImage();

or

java 复制代码
BufferedImage originalImage = ImageIO.read(new File("original.png"));
BufferedImage thumbnail = Thumbnails.of(originalImage)
        .forceSize(200, 200)
        .asBufferedImage();

这两个示例都从 originalImage 中获取图像,并使用创建 200 像素 x 200 像素的缩略图,并将结果存储在 thumbnail 中。

注意:上一节中的示例不一定会生成指定尺寸的缩略图。要确保缩略图具有指定尺寸,请使用本节所示的 .keepAspectRatio(false)forceSize 函数。虽然这些选项始终会生成指定尺寸的缩略图,但宽高比不会被保留。这意味着缩略图最终可能会被压缩或拉伸。

创建缩略图时旋转图像

java 复制代码
BufferedImage originalImage = ImageIO.read(new File("original.jpg"));
BufferedImage thumbnail = Thumbnails.of(originalImage)
        .size(200, 200)
        .rotate(90)
        .asBufferedImage();

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

创建特定尺寸的缩略图,同时保持宽高比

java 复制代码
Thumbnails.of("path/to/image")
        .crop(Positions.CENTER)
        .size(100, 100)
        .toFile("path/to/thumbnail");

上述代码生成一个保持原图宽高比的缩略图。超出 size 方法指定范围的图像部分会被裁剪。

例如,使用上述代码将图像从 240x200 调整为 100x100,结果如下:

创建特定尺寸的缩略图

图像的裁剪位置由传递给 crop 方法的 Position 参数决定。详情请参阅 crop(Position) 方法的文档。

Thumbnailator 能做什么?

以下页面提供了关于 Thumbnailator 功能的更多信息:

免责声明

Thumbnailator 仍处于早期开发阶段,其 API 随时可能更改。

许可协议

Thumbnailator 采用 MIT 许可证发布。

关于项目

Thumbnailator 是一个用于 Java 的缩略图生成库。它的流式操作可以一步完成相当复杂的缩略图处理任务。
MIT
Java
5,346
799
179
2015-07-25
2025-10-03

增长趋势 - stars