导读:在Java中制作高质量的缩略图可能是一项相当困难的任务,或者图片质量高页面加载慢等等原因使需要对图片进行处理,但是又不想写太多的代码太麻烦去处理图片,那么就可以使用Thumbnailator——Thumbnailator是一个单独的JAR文件,不依赖于外部库,使开发和部署变得简单和容易。

1.Thumbnailator能提供那些功能

  1. 图片裁剪
  2. 修改像素
  3. 缩小/扩大
  4. 压缩质量
  5. 旋转
  6. 加水印
  7. 转化图片格式
  8. 其他……

2.Thumbnailator怎么引入项目

  maven的pom.xml添加下面的dependency:

<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.</version>
</dependency>

  也可以下载thumbnailator-0.4.8.jar包,导入工程lib下面;

3.Thumbnailator怎么使用

package com.tao.springboot;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; public class Thumbnailator {
public static void main(String[] args) throws IOException {
// 需要压缩的图片
File inFile = new File("C:/images/test.jpg");
// 压缩完的存放地址
String outFile = "C:/images/test.jpg";
// 图片裁剪
Thumbnails.of(inFile).sourceRegion(,,,).size(,).toFile(outFile);
// 修改像素
Thumbnails.of(inFile).size(,).toFile(outFile);
// 缩小
Thumbnails.of(inFile).scale(0.5f).toFile(outFile);
// 扩大
Thumbnails.of(inFile).scale(2f).toFile(outFile);
// 压缩质量
Thumbnails.of(inFile).outputQuality(0.5f).toFile(outFile);
// 旋转
Thumbnails.of(inFile).rotate().toFile(outFile);
// 图片水印
File waterFile = new File("C:/images/water.jpg");
Thumbnails.of(inFile).watermark(Positions.BOTTOM_CENTER, ImageIO.read(waterFile),0.5f).toFile(outFile);
// 文字水印
BufferedImage bi = new BufferedImage(,,BufferedImage.TYPE_INT_BGR);
Graphics2D g = bi.createGraphics();
g.setColor(Color.lightGray);
g.drawRect(,,,);
g.drawString("文字水印", ,);
Thumbnails.of(inFile).watermark(Positions.BOTTOM_LEFT, bi, 0.5f).toFile(outFile);
// 转化图片格式
Thumbnails.of(inFile).outputFormatType("png").toFile(outFile);
} }

4.参考资料

github地址:https://github.com/coobird/thumbnailator

maven地址:https://mvnrepository.com/artifact/net.coobird/thumbnailator

Java语言利用Google的Thumbnailator处理图片的更多相关文章

  1. Java语言利用Collections.sort对Map,List排序

    1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...

  2. 利用栈实现算术表达式求值(Java语言描述)

    利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...

  3. 第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

  4. 【JAVA系列】Google爬虫如何抓取JavaScript的?

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[JAVA系列]Google爬虫如何抓取Java ...

  5. 全图文分析:如何利用Google的protobuf,来思考、设计、实现自己的RPC框架

    目录 一.前言 二.RPC 基础概念 1. RPC 是什么? 2. 需要解决什么问题? 3. 有哪些开源实现? 三.protobuf 基本使用 1. 基本知识 2. 使用步骤 四.libevent 1 ...

  6. 【百度文库课程】Java语言基础与OOP入门学习笔记一

    一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应 ...

  7. 瘋耔java语言笔记

    一◐ java概述                                                                                        1.1 ...

  8. Java语言中几个常用的包

    Java采用包结构来组织和管理类和接口文件.本文介绍Java语言类库中几个常用的包,因为这几个包在软件开发与应用中经常需要用到,其中有些包是必要的.若是离开它,还真不能做事情了. 第一个包:java. ...

  9. Java之--Java语言基础组成—数组

    Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...

随机推荐

  1. java基本算法

    1.链表 链表用来存储数据,由一系列的结点组成.这些结点的物理地址不一定是连续的,即可能连续,也可能不连续,但链表里的结点是有序的.一个结点由数据的值和下一个数据的地址组成.一个链表内的数据类型可以是 ...

  2. oracle数据库连接数反推公式

    sessions=1.1*processes+5,transactions=1.1*sessions.

  3. DeepFaceLab: 可视化交互式合成功能简介!

    DeepFaceLab在沉寂了几个月后(目测Iperov同志讨生活去了),在8月下旬又迎来了重大更新.我总结了一下,主要是更新了三大功能. 新增Avatar模型 交互式转换器 半脸模型支持FAN ​ ...

  4. 【sqlalchemy】使用正确的DB_URI却报错密码错误-密码中包含特殊符号导致

    [原因] db_password密码中含有特定字符,比如含有@ %,则把密码部分进行URL编码 [解决办法] from urllib.parse import quote_plus as urlquo ...

  5. python学习笔记:(九)循环(for和while)

    在python中循环包括for和while 1.while循环 while 判断条件: statements ----表示:判断条件为真时执行statements,为假不执行 2.for语句 for ...

  6. Python字符和字符值(ASCII或Unicode码值)转换方法

    Python字符和字符值(ASCII或Unicode码值)转换方法 这篇文章主要介绍了Python字符和字符值(ASCII或Unicode码值)转换方法,即把字符串在ASCII值或者Unicode值之 ...

  7. java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)

    1.重点掌握: html: 1.form表单:input,checkbox,seelct,radio,button,submit 2.table表格:thead-->tr-->th;tbo ...

  8. java游戏服务器 策略+简单工厂

    上一篇中我们讲到简单工厂模式有它的弊端,它不好在哪里呢? 我们看到,每次创建场景,我们都需要暴露两个类... 这是比较不好的, 可以通过策略模式+简单工厂模式来稍微改造下 一.先来一个策略模式UML图 ...

  9. 用linux主机做网关搞源地址转换(snat)

    一.原理图  二.环境 外网  A:192.168.100.20 (vmnet1) 网关  B:192.168.100.10 (vmnet1)     192.168.200.10 (vmnet2) ...

  10. heartbeat高可用

    一.基本了解 1.Hearbeat和keepalived区别Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称V ...