文档章节

Java生成缩略图之Thumbnailator

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:29
字数 1060
阅读 11
收藏 0
点赞 0
评论 0
Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。

http://code.google.com/p/thumbnailator/

版本:thumbnailator-0.4.2.jar

原图如下:



1、指定大小进行缩放
Java代码 复制代码  收藏代码
  1. //size(宽度, 高度)   
  2.   
  3. /*    
  4.  * 若图片横比200小,高比300小,不变    
  5.  * 若图片横比200小,高比300大,高缩小到300,图片比例不变    
  6.  * 若图片横比200大,高比300小,横缩小到200,图片比例不变    
  7.  * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300    
  8.  */    
  9. Thumbnails.of("images/a380_1280x1024.jpg")    
  10.         .size(200300)   
  11.         .toFile("c:/a380_200x300.jpg");   
  12.   
  13. Thumbnails.of("images/a380_1280x1024.jpg")    
  14.         .size(25602048)    
  15.         .toFile("c:/a380_2560x2048.jpg");  
//size(宽度, 高度)

/*  
 * 若图片横比200小,高比300小,不变  
 * 若图片横比200小,高比300大,高缩小到300,图片比例不变  
 * 若图片横比200大,高比300小,横缩小到200,图片比例不变  
 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300  
 */ 
Thumbnails.of("images/a380_1280x1024.jpg") 
        .size(200, 300)
        .toFile("c:/a380_200x300.jpg");

Thumbnails.of("images/a380_1280x1024.jpg") 
        .size(2560, 2048) 
        .toFile("c:/a380_2560x2048.jpg");


2、按照比例进行缩放
Java代码 复制代码  收藏代码
  1. //scale(比例)   
  2. Thumbnails.of("images/a380_1280x1024.jpg")    
  3.         .scale(0.25f)   
  4.         .toFile("c:/a380_25%.jpg");   
  5.   
  6. Thumbnails.of("images/a380_1280x1024.jpg")    
  7.         .scale(1.10f)   
  8.         .toFile("c:/a380_110%.jpg");  
//scale(比例)
Thumbnails.of("images/a380_1280x1024.jpg") 
        .scale(0.25f)
        .toFile("c:/a380_25%.jpg");

Thumbnails.of("images/a380_1280x1024.jpg") 
        .scale(1.10f)
        .toFile("c:/a380_110%.jpg");


3、不按照比例,指定大小进行缩放
Java代码 复制代码  收藏代码
  1. //keepAspectRatio(false) 默认是按照比例缩放的   
  2. Thumbnails.of("images/a380_1280x1024.jpg")    
  3.         .size(200200)    
  4.         .keepAspectRatio(false)    
  5.         .toFile("c:/a380_200x200.jpg");  
//keepAspectRatio(false) 默认是按照比例缩放的
Thumbnails.of("images/a380_1280x1024.jpg") 
        .size(200, 200) 
        .keepAspectRatio(false) 
        .toFile("c:/a380_200x200.jpg");


4、旋转
Java代码 复制代码  收藏代码
  1. //rotate(角度),正数:顺时针 负数:逆时针   
  2. Thumbnails.of("images/a380_1280x1024.jpg")    
  3.         .size(12801024)   
  4.         .rotate(90)    
  5.         .toFile("c:/a380_rotate+90.jpg");    
  6.   
  7. Thumbnails.of("images/a380_1280x1024.jpg")    
  8.         .size(12801024)   
  9.         .rotate(-90)    
  10.         .toFile("c:/a380_rotate-90.jpg");   
//rotate(角度),正数:顺时针 负数:逆时针
Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .rotate(90) 
        .toFile("c:/a380_rotate+90.jpg"); 

Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .rotate(-90) 
        .toFile("c:/a380_rotate-90.jpg");



5、水印
Java代码 复制代码  收藏代码
  1. //watermark(位置,水印图,透明度)   
  2. Thumbnails.of("images/a380_1280x1024.jpg")    
  3.         .size(12801024)   
  4.         .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f)    
  5.         .outputQuality(0.8f)    
  6.         .toFile("c:/a380_watermark_bottom_right.jpg");   
  7.   
  8. Thumbnails.of("images/a380_1280x1024.jpg")    
  9.         .size(12801024)   
  10.         .watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f)    
  11.         .outputQuality(0.8f)    
  12.         .toFile("c:/a380_watermark_center.jpg");  
//watermark(位置,水印图,透明度)
Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f) 
        .outputQuality(0.8f) 
        .toFile("c:/a380_watermark_bottom_right.jpg");

Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f) 
        .outputQuality(0.8f) 
        .toFile("c:/a380_watermark_center.jpg");



6、裁剪
Java代码 复制代码  收藏代码
  1. //sourceRegion()   
  2.   
  3. //图片中心400*400的区域   
  4. Thumbnails.of("images/a380_1280x1024.jpg")   
  5.         .sourceRegion(Positions.CENTER, 400,400)   
  6.         .size(200200)   
  7.         .keepAspectRatio(false)    
  8.         .toFile("c:/a380_region_center.jpg");   
  9.   
  10. //图片右下400*400的区域   
  11. Thumbnails.of("images/a380_1280x1024.jpg")   
  12.         .sourceRegion(Positions.BOTTOM_RIGHT, 400,400)   
  13.         .size(200200)   
  14.         .keepAspectRatio(false)    
  15.         .toFile("c:/a380_region_bootom_right.jpg");   
  16.   
  17. //指定坐标   
  18. Thumbnails.of("images/a380_1280x1024.jpg")   
  19.         .sourceRegion(600500400400)   
  20.         .size(200200)   
  21.         .keepAspectRatio(false)    
  22.         .toFile("c:/a380_region_coord.jpg");  
//sourceRegion()

//图片中心400*400的区域
Thumbnails.of("images/a380_1280x1024.jpg")
		.sourceRegion(Positions.CENTER, 400,400)
		.size(200, 200)
        .keepAspectRatio(false) 
        .toFile("c:/a380_region_center.jpg");

//图片右下400*400的区域
Thumbnails.of("images/a380_1280x1024.jpg")
		.sourceRegion(Positions.BOTTOM_RIGHT, 400,400)
		.size(200, 200)
        .keepAspectRatio(false) 
        .toFile("c:/a380_region_bootom_right.jpg");

//指定坐标
Thumbnails.of("images/a380_1280x1024.jpg")
		.sourceRegion(600, 500, 400, 400)
		.size(200, 200)
        .keepAspectRatio(false) 
        .toFile("c:/a380_region_coord.jpg");



7、转化图像格式
Java代码 复制代码  收藏代码
  1. //outputFormat(图像格式)   
  2. Thumbnails.of("images/a380_1280x1024.jpg")    
  3.         .size(12801024)   
  4.         .outputFormat("png")    
  5.         .toFile("c:/a380_1280x1024.png");    
  6.   
  7. Thumbnails.of("images/a380_1280x1024.jpg")    
  8.         .size(12801024)   
  9.         .outputFormat("gif")    
  10.         .toFile("c:/a380_1280x1024.gif");   
//outputFormat(图像格式)
Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .outputFormat("png") 
        .toFile("c:/a380_1280x1024.png"); 

Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .outputFormat("gif") 
        .toFile("c:/a380_1280x1024.gif");


8、输出到OutputStream
Java代码 复制代码  收藏代码
  1. //toOutputStream(流对象)   
  2. OutputStream os = new FileOutputStream("c:/a380_1280x1024_OutputStream.png");   
  3. Thumbnails.of("images/a380_1280x1024.jpg")    
  4.         .size(12801024)   
  5.         .toOutputStream(os);  
//toOutputStream(流对象)
OutputStream os = new FileOutputStream("c:/a380_1280x1024_OutputStream.png");
Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
        .toOutputStream(os);


9、输出到BufferedImage
Java代码 复制代码  收藏代码
  1. //asBufferedImage() 返回BufferedImage   
  2. BufferedImage thumbnail = Thumbnails.of("images/a380_1280x1024.jpg")    
  3.         .size(12801024)   
  4.         .asBufferedImage();   
  5. ImageIO.write(thumbnail, "jpg"new File("c:/a380_1280x1024_BufferedImage.jpg"));   
//asBufferedImage() 返回BufferedImage
BufferedImage thumbnail = Thumbnails.of("images/a380_1280x1024.jpg") 
		.size(1280, 1024)
		.asBufferedImage();
ImageIO.write(thumbnail, "jpg", new File("c:/a380_1280x1024_BufferedImage.jpg"));


本文转载自:http://blog.csdn.net/yuwenruli/article/details/8449015

共有 人打赏支持
abcijkxyz
粉丝 61
博文 6195
码字总数 1876
作品 0
深圳
项目经理
在JAVA中使用Thumbnails为图片加水印

在JAVA中使用Thumbnails为图片加水印 将D盘下面的cat.jpg作为水印加在2.jpg上面,输出新的图片2_cat.jpg到D盘下面 1、java类 1)、of(new File("D:2.jpg")) 打开一张图片作为底图 2)、size(20...

Qiu_CJ ⋅ 04/18 ⋅ 0

安卓开发必备知识体系:Java篇

大家好我是张拭心,自从各位朋友帮点广X开始,我发现我每天更有奔头了,走起路来也更有劲了,说啥也得更新的勤快一点。不过放心,我一定推送有价值的内容给大家,还请朋友们照旧动动手指点点...

d29h1jqy3akvx ⋅ 05/10 ⋅ 0

Java 借助ImageMagic实现图片编辑服务

Java 借助ImageMagic实现图片编辑服务 java原生对于图片的编辑处理并没有特别友好,而且问题也有不少,那么作为一个java后端,如果要提供图片的编辑服务可以怎么办?也得想办法去支持业务需求...

小灰灰Blog ⋅ 04/18 ⋅ 0

JNI开发流程与引用数据类型的处理

今天我们来看下Java JNI,先看下维基百科给的定义, JNI, Java Native Interface, Java本地接口,是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用或库,也可以被其他程序调用。...

juexingzhe ⋅ 05/04 ⋅ 0

给Java字节码加上”翅膀“的JIT编译器

给Java字节码加上”翅膀“的JIT编译器 上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是...

九劫散仙 ⋅ 昨天 ⋅ 0

Java 编程之美:并发编程高级篇之一

本文来自作者 追梦 在 GitChat 上分享 「Java 编程之美:并发编程高级篇之一」 编辑 | 工藤 前言 借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了。 ...

gitchat ⋅ 05/24 ⋅ 0

ubuntu16.0.4不能上网和jdk1.8环境配置

转载自: https://jingyan.baidu.com/article/6c67b1d68facbb2786bb1e7b.html 虽然设置的时候图标位置可能不太一样,但是操作步骤一样的,网上有说让在Windows下查看一下vmware的网络服务是否...

u011976443 ⋅ 05/25 ⋅ 0

MySQL多数据源笔记5-ShardingJDBC实战

Sharding-JDBC集分库分表、读写分离、分布式主键、柔性事务和数据治理与一身,提供一站式的解决分布式关系型数据库的解决方案。 从2.x版本开始,Sharding-JDBC正式将包名、Maven坐标、码云仓...

狂小白 ⋅ 03/19 ⋅ 0

Java 8 停止维护,Java 9 难产,IDEA 2018 发布,还有……

祝大家五一劳动节快乐,工作顺利! 又到了总结上个月干货的时候了,这个月我们带来了各种Java技术干货,各种送书抽奖福利,各种面试题分享,各种最新动态资讯等。 - 5.1重磅活动 区块链免费送...

Java技术栈 ⋅ 04/30 ⋅ 0

编写你的第一个HelloWorld

写在前面的话 因为Java基础是以后学习框架的基石,因此开个文集首先写写Java基础,本来想直奔基础知识的介绍,但是为了保证知识的完整性,因此从Java安装和运行“hello world”开始(虽然百度...

nanaFighting ⋅ 06/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 32分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 55分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 56分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 今天 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 今天 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 今天 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部