什么是Thumbnailator?

文章插图
Thumbnailator是Google开源的优秀图片处理的第三方Java类库,比JDK自带的库要好用的多 。
官网Github地址
Maven依赖
目前最新版本是0.4.19
【java图片处理类库】
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.19</version></dependency>图片处理步骤Thumbnailtor处理图片的步骤可以看我绘制的下图来说明 。

文章插图
主要分为三个步骤 。
构建Thumbnails.Builder
要使用thumbnailtor,主要使用Thumbnails类,该类采用建造者模式设计,类中提供了很多返回Builder的静态方法 。

文章插图
正如上图所示,Thumbnails提供了通过字符串图片地址、File对象、URI对象等方式创建Thumbnails对象的方式 。
of方法
of方法提供了多种参数,当然参数虽然不同,功能却是相同的 。并且of支持多个参数,可以同时处理多个图片,不过要特别注意,处理多个图片的时候,输出方法也要使用支持输出多个图片的方法 。
package cn.programtalk;import net.coobird.thumbnailator.Thumbnails;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.net.URL;public class ThumbnailsOfDemo { public static void main(String[] args) throws IOException { // 参数是本地文件路径,支持多参数 Thumbnails.of("input/logo.png") .scale(1D) .toFile("output/o1.png"); // File类型的参数,支持多参数 Thumbnails.of(new File("input/logo.png")) .scale(1D) .toFile("output/o2.png"); // BufferedImage类型参数 BufferedImage bufferedImage = ImageIO.read(new File("input/logo.png")); Thumbnails.of(bufferedImage) .scale(1D) .toFile("output/o3.png"); // FileInputStream类型 File file = new File("input/logo.png"); FileInputStream fis = new FileInputStream(file); Thumbnails.of(fis) .scale(1D) .toFile("output/o4.png"); // 网络图片 Thumbnails.of(new URL("***/202302061502561.png")) .scale(1D) .toFile("output/o4.png"); }}scale代表缩放,toFile是输出图片的方法,先不要管,后面会讲到 。代码执行完毕后,会生成五个图片 。fromFilenames方法
Thumbnails.fromFilenames(Iterable<String> files)方法支持接入多个图片,也就是说能处理多个图片 。
package cn.programtalk;import net.coobird.thumbnailator.Thumbnails;import net.coobird.thumbnailator.name.Rename;import java.io.File;import java.io.IOException;import java.util.Arrays;import java.util.List;public class ThumbnailsFromFilenamesDemo { /** * 使用FromFiles处理多个图片 。*/ public static void main(String[] args) throws IOException { // 参数是本地文件路径,支持多参数 File file = new File("input"); // input文件夹下有多个图片 File[] files = file.listFiles(); assert files != null; List<String> filenames = Arrays.stream(files).map(File::getPath).toList(); Thumbnails.fromFilenames(filenames) .scale(1D) // 这里必须使用`toFiles`,因为处理的是多图 .toFiles(new File("output"), Rename.SUFFIX_HYPHEN_THUMBNAIL); }}toFiles的用法后面会讲解 。fromFiles方法
Thumbnails.fromFiles方法(Iterable<File> files)方法支持接入多个图片,也就是说能处理多个图片 。不同于fromFilenames的是它的参数是Iterable<File>类型 。
package cn.programtalk;import net.coobird.thumbnailator.Thumbnails;import net.coobird.thumbnailator.name.Rename;import java.io.File;import java.io.IOException;import java.util.Arrays;public class ThumbnailsFromFilesDemo { /** * 使用fromFiles处理多个图片 。*/ public static void main(String[] args) throws IOException { File file = new File("input"); File[] files = file.listFiles(); assert files != null; Thumbnails.fromFiles(Arrays.asList(files)) .scale(1D) // 这里必须使用`toFiles`,因为处理的是多图 .toFiles(new File("output"), Rename.SUFFIX_HYPHEN_THUMBNAIL); }}
推荐阅读
-
-
-
-
-
-
-
-
-
-
- 骨马能登记吗
- 松茸保存的方法,野生松茸怎么保存方法
- 鱼被咬伤了怎么办,鱼被咬了能自己恢复吗
- Excel文件只读模式应该怎样取消
- Word文档要如何插入Excel表格
- pvc和pe材质的区别
- 如何在Excel中绘图,Excel文件中应该怎样画图
- cdr应该怎么才可以删除不要的部分
- lol如何关闭录制功能,英雄联盟点击左侧录制按钮声音
