Thumbnailator-图片处理的Google开源Java类库

Thumbnailator是一个强大的Java库,用于高效地创建图片缩略图。它提供了丰富的功能,如图片缩放、裁剪、旋转、加水印等。通过简单的API,可以方便地调整图片质量和尺寸,并能直接将结果保存到文件或输出到OutputStream。示例代码展示了如何使用Thumbnailator进行各种图像操作,包括创建缩略图、添加水印和旋转图像。
摘要由CSDN通过智能技术生成

最近认识了一个图片处理的类库Thumbnailator,可以进行图片缩放,裁剪,打水印,调整图片比例等。

优势在于处理效果比Java API好,代码量少。

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

以下例子转自https://blog.csdn.net/qq_34839150/article/details/109903432

处理方法例子:

从图像文件创建缩略图
Thumbnails.of(new File("original.jpg"))
        .size(160, 160)
        .toFile(new File("thumbnail.jpg"));
在此示例中,图像来自original.jpg调整大小,然后保存到thumbnail.jpg。

或者,Thumbnailator将接受文件名作为String。File不需要使用对象指定图像文件:

Thumbnails.of("original.jpg")
        .size(160, 160)
        .toFile("thumbnail.jpg");
在编写快速原型代码或从脚本语言中使用Thumbnailator时,此表单非常有用。

使用旋转和水印创建缩略图
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度,然后在右下角放置一个半透明水印,然后image-with-watermark.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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LemonSmile_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值