- 浏览: 3550781 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38200
-
Cordova 3.x入门...
浏览量:607439
-
常用Java开源Libra...
浏览量:682583
-
搭建 CentOS 6 服...
浏览量:89438
-
Spring Boot 入...
浏览量:401976
-
基于Spring Secu...
浏览量:69733
-
MQTT入门
浏览量:91783
文章分类
最新评论
-
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以上。
我使用的是1.6
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
评论
51 楼
尘土飞扬
2016-04-22
如果工作量不大,直接自己写个函数比较简单
50 楼
200cc
2015-03-16
请教up主:
在小内存的环境下,有什么处理方式/图片插件可以避免出现OOM异常吗?
在小内存的环境下,有什么处理方式/图片插件可以避免出现OOM异常吗?
49 楼
liangaspx
2015-02-10
48 楼
rensanning
2014-12-05
@Chenzh_758 转换了就没有意义了。
47 楼
Chenzh_758
2014-12-05
CMYK模式的图像的问题,可以解决,直接把cmyk转成rgb模式就行了,代码有我博客上有
46 楼
di1984HIT
2014-09-11
呵呵,不错~
45 楼
JINTIANBUXIAYU1
2014-09-01
生成的大尺寸图片大小达到2M多了,有没有办法控制大小在500或者600KB左右,图片太大需要更长的时间加载,如果楼主看见了发我qq邮箱1376528532@qq.com.
44 楼
SE_XiaoFeng
2013-07-19
真是相当的好玩啊.哈哈.
43 楼
小威哥
2013-06-17
不清楚能否用与android平台上,有试过没?
42 楼
小威哥
2013-06-17
嗯,不错,现在java也研究的很深入了啊。
41 楼
扣子___3
2013-04-11
很好 支持一下
40 楼
dayangyang90
2013-01-24
加水印的时候可以加文字的吗?
39 楼
mzh_2008beijing
2012-12-21
so easy
38 楼
mzh_2008beijing
2012-12-21
特别感谢。真是强大的缩略图生成组件!
37 楼
sunliyings17
2012-12-11
你说的第一点,经过测试好像不是那样的
若图片横比200小,高比300小,不变 ,这里不是不变,而是放大了呀,我要怎么样才能让它比指定的小的时候,不变?
若图片横比200小,高比300小,不变 ,这里不是不变,而是放大了呀,我要怎么样才能让它比指定的小的时候,不变?
36 楼
newvirus
2012-07-06
rensanning 写道
newvirus 写道
问个问题啊 为什么我eclipse中为什么总是提示不试用的参数呢?Thumbnails.of("images/a380_1280x1024.jpg"),提示of(String[])
把JDK选1.5以上。
我使用的是1.6
35 楼
宋建勇
2012-06-18
怎么只能int型数据,Double不行吗
34 楼
sunyzc
2012-06-04
image = Thumbnails.of(image).size(image.getWidth(), image.getHeight()).rotate(90).asBufferedImage();
多旋转几次之后分辨率什么的没变,图像变模糊了是什么情况
多旋转几次之后分辨率什么的没变,图像变模糊了是什么情况
33 楼
sunyzc
2012-06-04
好像做几次90度旋转后图片变模糊了啊
32 楼
iceblooded
2012-06-04
发表评论
-
Web API分页
2018-11-13 13:38 1572(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
JAXB实例入门
2017-06-09 10:17 1790JAXB(Java Architecture for XML ... -
Java Web项目中的Event
2017-06-05 09:42 1687(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 2050SPI:Service Provider Interface ... -
Jackson实例入门
2017-05-03 12:55 1721Jackson:Java平台的JSON解析器。 版本: ja ... -
为什么https被redirect成了http?
2016-11-14 09:35 7887全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1318样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 1045基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1335Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7628先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1692基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2403Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22574熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7837Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11588JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2875GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 27082关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6590CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2991在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16211Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
同时,`Java生成缩略图之Thumbnailator指定大小进行缩放_files`目录可能包含运行示例代码所需的资源文件。 总的来说,thumbnailator是一个强大的Java库,可以帮助开发者轻松实现图像处理任务,特别是生成高质量的...
**Java开源图片框架thumbnailator-0.4.8.jar** 是一个专为Java开发者设计的高效、高质量的图片处理库,特别适用于生成缩略图。这个框架提供了丰富的功能,使得在Java应用程序中处理图片变得更加简单。thumbnailator...
Thumbnailator是一个 Java 的缩略图生成库。为什么选择 Thumbnailator?用 Java 制作高质量的缩略图可能是一项相当困难的任务。学习如何使用图像 I/O API、Java 2D API、图像处理、图像缩放技术......但不要害怕!...
thumbnailator(包括jar包跟api) java用于图片压缩 生成缩略图 添加水印等 这是我见过最好的压缩工具了 使用方法: Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat(...
在Java编程中,生成缩略图通常涉及到复杂的图像处理算法,包括图像重采样、比例调整、颜色空间转换等。thumbnailator库通过封装这些复杂操作,使得开发者只需要几行代码就能完成缩略图的创建。下面我们将深入探讨...
同时,我们也会学习到图像处理库在生成缩略图时的关键技术和最佳实践。 首先,JSP是Java平台上的服务器端脚本语言,用于创建动态、交互式的Web应用程序。JSP页面由HTML、CSS、JavaScript以及嵌入其中的Java代码组成...
java图片压缩文件thumbnailator-0.4.8.jar.zip Thumbnailator是一个用来对图像进行处理以及缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。有了它我们就不用在费...
7. **自定义操作**:Thumbnailator允许你在生成缩略图的过程中添加自定义操作,如调整饱和度、亮度等。 总之,Thumbnailator是Java开发者处理图像的强大工具,其简洁的API和丰富的功能使得图像处理变得简单易行。...
Thumbnailator 是一个专为 Java 平台设计的高效且易于使用的图像处理库,尤其适用于生成缩略图。该库通过其简洁的 API 设计,极大地简化了从图像文件和图像对象创建缩略图的过程。只需要几行代码,用户就可以轻松...
"Thumbnailator-0.2.6"是一个专门用于生成缩略图的Java包,它为开发者提供了一个简单且高效的API,只需几行代码即可快速实现缩略图的创建。这个开源项目深受Java开发者欢迎,因为其强大的功能和易用性。 **一、...
本文将详细介绍一个名为Thumbnailator的Java库,它是用于生成图片缩略图的强大工具,并讲解如何在项目中使用。 Thumbnailator是一个开源的Java库,专门设计用来创建、编辑和转换图像。它具有高度的灵活性和易用性...
"thumbnailator图片处理包JAVA"是一个专门为Java开发者设计的库,用于方便地创建、修改和转换图像,尤其是生成缩略图。thumbnailator以其高效、易用和灵活性著称,是许多Java项目中处理图像需求的理想选择。这个...
总的来说,Thumbnailator是一个强大且灵活的Java图像处理库,尤其在生成缩略图方面表现卓越。其简洁的API、丰富的功能和出色的性能,使得它成为Java开发者的首选工具之一。无论是在网站开发、桌面应用还是移动应用中...
Thumbnailator是Java的缩略图生成库。 为什么选择Thumbnailator? 用Java制作高质量的缩略图可能是一项相当困难的任务。 学习如何使用图像I / O API,Java 2D API,图像处理,图像缩放技术,但不要担心! ...
1. **缩略图生成**:thumbnailator的最基本功能就是生成缩略图。通过`Thumbnails.of()`方法,可以轻松地读取图片文件并创建缩略图。用户可以指定缩略图的宽度和高度,库会自动保持原始图片的比例。 2. **尺寸调整**...
thumbnailator库以其简洁的API和强大的功能,成为了Java开发中生成缩略图的首选工具之一。开发者可以根据具体需求,结合库提供的各种方法,轻松实现复杂的图像处理任务。无论是个人项目还是大型应用,thumbnailator...
Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,且允许微调缩略图生成,同时保持了需要写入到...同时还支持根据一个目录批量生成缩略图。里面有doc
`thumbnailator-0.4.8` 是一个用于创建、修改和转换图像的Java库,尤其适用于生成缩略图。这个库提供了简单易用的API,使得开发者在处理图像时可以更加高效。在这个压缩包中,包含的是 `thumbnailator-0.4.8.jar` ...
从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。
总的来说,thumbnailator是一个强大的Java图像处理库,特别适合用于生成缩略图。它不仅功能全面,而且易于使用,是Java开发者在处理图像任务时的理想选择。通过这个压缩包,你可以轻松地在项目中集成thumbnailator,...