- 浏览: 3516378 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:37536
-
Cordova 3.x入门...
浏览量:604482
-
常用Java开源Libra...
浏览量:678344
-
搭建 CentOS 6 服...
浏览量:87416
-
Spring Boot 入...
浏览量:399943
-
基于Spring Secu...
浏览量:69109
-
MQTT入门
浏览量:90582
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。
http://code.google.com/p/thumbnailator/
版本:thumbnailator-0.4.2.jar
原图如下:
1、指定大小进行缩放
2、按照比例进行缩放
3、不按照比例,指定大小进行缩放
4、旋转
5、水印
6、裁剪
7、转化图像格式
8、输出到OutputStream
9、输出到BufferedImage
需要注意的是,对于CMYK模式的图像,由于JDK的Bug,目前还不能够处理,会出以下异常:
ICC profile
这些问题可以JAI.create()来代替ImageIO.read()解决。而高清图的内存溢出OOM问题只能使用ImageMagick转换了。
把JDK选1.5以上。
http://code.google.com/p/thumbnailator/
版本:thumbnailator-0.4.2.jar
原图如下:
1、指定大小进行缩放
//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、按照比例进行缩放
//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、不按照比例,指定大小进行缩放
//keepAspectRatio(false) 默认是按照比例缩放的 Thumbnails.of("images/a380_1280x1024.jpg") .size(200, 200) .keepAspectRatio(false) .toFile("c:/a380_200x200.jpg");
4、旋转
//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、水印
//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、裁剪
//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、转化图像格式
//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
//toOutputStream(流对象) OutputStream os = new FileOutputStream("c:/a380_1280x1024_OutputStream.png"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280, 1024) .toOutputStream(os);
9、输出到BufferedImage
//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"));
需要注意的是,对于CMYK模式的图像,由于JDK的Bug,目前还不能够处理,会出以下异常:
引用
javax.imageio.IIOException: Unsupported Image Type
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1063)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1034)
at javax.imageio.ImageReader.read(ImageReader.java:940)
at net.coobird.thumbnailator.tasks.io.FileImageSource.read(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1063)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1034)
at javax.imageio.ImageReader.read(ImageReader.java:940)
at net.coobird.thumbnailator.tasks.io.FileImageSource.read(Unknown Source)
引用
javax.imageio.IIOException: Incompatible color conversion
at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkColorConversion(JPEGImageReader.java:973)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkColorConversion(JPEGImageReader.java:973)
ICC profile
引用
java.lang.IllegalArgumentException: Numbers of source Raster bands and source color space components do not match
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:482)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1268)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1236)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1039)
at javax.imageio.ImageReader.read(ImageReader.java:939)
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:482)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1268)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1236)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1039)
at javax.imageio.ImageReader.read(ImageReader.java:939)
这些问题可以JAI.create()来代替ImageIO.read()解决。而高清图的内存溢出OOM问题只能使用ImageMagick转换了。
- ThumbnailatorTest.rar (224.4 KB)
- 下载次数: 2090
评论
31 楼
nshg
2012-06-04
刚好用到这方面的东西,看看好用不
30 楼
java10000
2012-06-04
建议增加补白的功能,这个对于处理不规则图片比较有用
29 楼
longware
2012-06-04
看起来很爽的样子
28 楼
dick1305
2012-06-04
试用下看看,先谢谢。
27 楼
ctfzh
2012-06-04
不错,使用起来看起来蛮简单方便的。
26 楼
dotjar
2012-06-03
之前给android客户端做数据,用过这个东西
25 楼
ilovelpz
2012-06-03
改天看看JAI会不会失真
24 楼
ilovelpz
2012-06-03
这个旋转之后失真有点严重啊 outputQuality 这个设置为1,还是看到明显的失真 还要设置啥东西不
23 楼
xici_magic
2012-06-02
支持一下了,不错
22 楼
java10000
2012-06-02
建议增加补白的功能,这个对于处理不规则图片比较有用
21 楼
ronggui
2012-06-02
真的很方便,简单
20 楼
362217990
2012-06-02
不错,以前自己写的可以抛弃了,以后网站采用的缩略图工具 http://www.yy606.com/
19 楼
wander312
2012-06-02
nice, easy
18 楼
elkan1788
2012-06-01
感觉挺方便的,不过不太喜欢在项目中引用太多的JAR包,下次看看源码取精锐,嘻嘻
17 楼
alanlhy
2012-06-01
前一段时间也做了我们项目中关于图片的功能,也用到图片缩略,但是用到的Java的api完成的。。。看了这个,学习学习。。。
16 楼
dwangel
2012-06-01
嗯,说点打击人的话.
相比JAI有啥优势?
除了比JAI容易找到下载位置。
相比JAI有啥优势?
除了比JAI容易找到下载位置。
15 楼
helloboy077
2012-06-01
不错,很方便,以后也许会用到.收藏.
14 楼
rensanning
2012-06-01
newvirus 写道
问个问题啊 为什么我eclipse中为什么总是提示不试用的参数呢?Thumbnails.of("images/a380_1280x1024.jpg"),提示of(String[])
把JDK选1.5以上。
13 楼
宋建勇
2012-06-01
不错,正好用得到
12 楼
newvirus
2012-06-01
问个问题啊 为什么我eclipse中为什么总是提示不试用的参数呢?Thumbnails.of("images/a380_1280x1024.jpg"),提示of(String[])
发表评论
-
Web API分页
2018-11-13 13:38 1511(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
JAXB实例入门
2017-06-09 10:17 1709JAXB(Java Architecture for XML ... -
Java Web项目中的Event
2017-06-05 09:42 1620(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 1996SPI:Service Provider Interface ... -
Jackson实例入门
2017-05-03 12:55 1642Jackson:Java平台的JSON解析器。 版本: ja ... -
为什么https被redirect成了http?
2016-11-14 09:35 7645全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1254样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 989基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1283Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7461先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1613基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2280Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22391熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7723Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11437JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2827GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 26925关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6482CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2936在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16128Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
thumbnailator(包括jar包跟api) java用于图片压缩 生成缩略图 添加水印等 这是我见过最好的压缩工具了 使用方法: Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat(...
java图片压缩文件thumbnailator-0.4.8.jar.zip Thumbnailator是一个用来对图像进行处理以及缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。有了它我们就不用在费...
Thumbnailator是一个为Java界面更流畅的缩略图生成库,从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,使用起来非常方便,需要的朋友可以了解下
用java技术处理图片,生成缩略图,添加水印,切割裁剪图片,格式转换
JSP使用上传文件,并生产高清缩略图示例
Thumbnailator是Java的缩略图生成库。 为什么选择Thumbnailator? 用Java制作高质量的缩略图可能是一项相当困难的任务。 学习如何使用图像I / O API,Java 2D API,图像处理,图像缩放技术,但不要担心! ...
Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,且允许微调缩略图生成,同时保持了需要写入到...同时还支持根据一个目录批量生成缩略图。里面有doc
用于生成缩略图的java包,几行代码就可以生成缩略图,希望对大家有用
Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。 支持:图片缩放,区域裁剪,水印,旋转,保持比例。
从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。
Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。
Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。有了它我们就不用在费心思使用Image I/O API,Java 2D API等等来生成缩略图了,它...
Thumbnailator 是一个用来生成图像缩略图、裁切、旋转、添加水印等操作的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。
Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。
Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图
Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图
Thumbnailator 是一个用来生成图像缩略图、裁切、旋转、添加水印等操作的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。
Thumbnailator 是一个用来生成图像缩略图的 Java 类库,通过很简单的代码即可生成图片缩略图
Thumbnailator 是一个用来生成图像缩略图、裁切、旋转、添加水印等操作的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。