文档章节

Java生成缩略图之Thumbnailator

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:29
字数 1060
阅读 11
收藏 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
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
高清缩略图之Thumbnailator

搞网站开发,经常要用到的一个功能是生成缩略图。如果对缩略图的质量要求不高,直接用JDK提供的Image API就可以搞定,简单示例: File _file = new File("/Order005-0001.jpg"); //读入文件I...

一剑风徽
2012/11/18
0
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
06/26
0
0
Jmagic与 ImageMagick linux下安装与使用

公司现在用的是java开发,后台难免会用到图片上传,自动生成缩略图,然后不可避免的要安装一些比较好的软件,我们公司使用的是ImageMagick,一个图片处理程序,就是说我们可以通过程序来进行...

枫爱若雪
2012/09/21
0
0
高清缩略图之GraphicsMagick

GraphicsMagick号称图像处理领域的瑞士军刀,也称命令行版的Photoshop, 短小精悍的代码却提供了一个超棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括重...

一剑风徽
2012/11/18
0
2
java图片处理--第三方JAR

1.简单介绍 借用红薯对Thumbnailator 的描述:Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。 有了这玩意...

TheLostman
2016/01/11
195
4

没有更多内容

加载失败,请刷新页面

加载更多

活动推荐|互联网3.0与区块链新时代论坛(北京)

1 时间地点 **时间:**9月22日 14:00 - 18:00 地点:(北京海淀)西大街70号 3w咖啡 二层 2 活动详情 Harmony创始人Stephen及团队将介绍他们的区块链分片扩容技术。Stephen曾任Apple地图服务...

HiBlock
41分钟前
1
0
如何优雅的删除Redis的大key

关于Redis大键(Key),我们从[空间复杂性]和访问它的[时间复杂度]两个方面来定义大键。前者主要表示Redis键的占用内存大小;后者表示Redis集合数据类型(set/hash/list/sorted set)键,所含有的...

IT--小哥
51分钟前
1
0
spring cloud学习笔记

工具 eclipse 4.9 gradle 4.10.2 spring cloud Finchley.SR1 spring boot 2.0.4 build.gradle buildscript {ext {springBootVersion = '2.0.4.RELEASE'}repositories {jcenter()......

bobby2006
53分钟前
1
0
Tcl命令操作实验-----(5)

Vivado% proc myproc {arg} {puts $arg}Vivado% myproc mynamemynameVivado% if {2>1} {puts 2>1} else {puts 2<1}2>1...

whoisliang
今天
1
0
比特币钱包RPC的PHP调用方法

当我们希望在Php开发的网站中加入比特币支付功能时,需要解决的第一个 问题,就是如何在Php程序代码中调用比特币钱包的RPC API开发接口来实现 我们期望的功能,例如比特币的支付与接收。 例如...

汇智网教程
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部