前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java生成缩略图,我觉得Thumbnailator挺香!

Java生成缩略图,我觉得Thumbnailator挺香!

作者头像
布禾
发布2021-04-09 15:10:06
3.9K0
发布2021-04-09 15:10:06
举报
简介

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

通过Thumbnailator提供的流畅接口(fluent interface)的方式可以完成复杂的缩略图处理任务,无需访问Image I/O API并通过Graphics2D对象手动操作BufferedImages。

Maven依赖:

代码语言:javascript
复制
<dependency>
	<groupId>net.coobird</groupId>
	<artifactId>thumbnailator</artifactId>
	<version>0.4.8</version>
</dependency>
Thumbnailator的使用

原图original.jpg:

大小:49.1 KB 尺寸:640 x 426

生成缩略图(按等比缩放):

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of(new File("f:\\original.jpg"))
                //设置缩略图大小,按等比缩放
                .size(200, 200)
                //将生成的缩略图写入文件
                .toFile(new File("f:\\thumbnail.jpg"));
    }
}

大小:4.7 KB 尺寸:200 x 133

生成缩略图(不按等比缩放):

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of(new File("f:\\original.jpg"))
                //设置缩略图大小,不按等比缩放
                .forceSize(200, 200)
                //将生成的缩略图写入文件
                .toFile(new File("f:\\thumbnail.jpg"));
    }
}

大小:6.3 KB 尺寸:200 x 200

按比例缩放图片:

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of(new File("f:\\original.jpg"))
                //缩小50%
                .scale(0.5)
                //将生成的缩略图写入文件
                .toFile(new File("f:\\thumbnail.jpg"));
    }
}

大小:9.8 KB 尺寸:320 x 213

缩放并旋转图片:

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of(new File("f:\\original.jpg"))
                .size(300, 300)
                //旋转180度
                .rotate(180)
                //将生成的缩略图写入文件
                .toFile(new File("f:\\thumbnail.jpg"));
    }
}

大小:8.6 KB 尺寸:300 x 200

缩放图片并添加水印:

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        //水印图片
        BufferedImage watermarkImage = ImageIO.read(new File("f:\\watermark.jpg"));

        Thumbnails.of(new File("f:\\original.jpg"))
                .size(500, 500)
                //添加水印
                //watermark参数1:表示水印位置,Positions枚举类中预定义了一些常用的位置
                //watermark参数2:水印图片
                //watermark参数3:水印的不透明度
                .watermark(Positions.BOTTOM_RIGHT, watermarkImage, 0.8f)
                //将生成的缩略图写入文件
                .toFile(new File("f:\\thumbnail.jpg"));
    }
}

大小:23.1 KB 尺寸:500 x 333

图片裁剪:

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of(new File("f:\\original.jpg"))
                //裁剪大小
                .size(200, 200)
                //裁剪位置
                .crop(Positions.CENTER)
                .toFile(new File("f:\\thumbnail.jpg"));
    }
}

大小:6.1 KB 尺寸:200 x 200

批量处理缩略图:

代码语言:javascript
复制
public class Demo {
    public static void main(String[] args) throws IOException {
        Thumbnails.of("f:\\original.jpg", "f:\\original2.jpg", "f:\\original3.jpg")
                .size(200, 200)
                //处理后的缩略图输出到指定文件夹,使用原来的名称
                .toFiles(new File("f:\\images"), Rename.NO_CHANGE);
    }
}

除了将缩略图输出到指定文件之外,也可以将他输出到输出流或直接作为BufferedImage返回。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • Thumbnailator的使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档