【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】
Thumbnailator概述:
Thumbnailator是与Java界面流畅的缩略图生成库。它简化了通过提供一个API允许精细的缩略图生成调整生产从现有的图像文件的缩略图和图像对象的过程,同时保持所需要的最少的代码量。个人的理解,它对java自带的图片处理工具进行了优化,在效率和使用的方便程度上都要高于java自带的处理工具。Thumbnailator的主要常用功能如下:
- 按尺寸原比例缩放图片
- 按百分比缩放图片
- 按尺寸缩放图片,但不保持原图片比例
- 按角度旋转图片
- 给图片添加水印效果
- 缩放图片写入到输出流中
下面将对各个功能进行逐一的示范演示,以及最终的处理效果
- 原图展示

- 按尺寸原比例缩放图片
代码如下:
- public static boolean operateByMaxSize(String inSrc, String outSrc, int height, int width){
- boolean flag = false;
- if(checkNull(inSrc) || checkNull(outSrc)){
- return flag;
- }
- try {
- Thumbnails.of(inSrc).size(width, height).toFile(outSrc);
- flag = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return flag;
- }
处理之后的图片效果如下:

- 按百分比缩放图片
代码如下:
- public static boolean operateByPer(String inSrc, String outSrc, double percent){
- boolean flag = false;
- if(checkNull(inSrc) || checkNull(outSrc)){
- return flag;
- }
- Builder<File> builder = Thumbnails.of(inSrc);
- builder.scale(percent);
- try {
- builder.toFile(outSrc);
- flag = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return flag;
- }
效果展示如下:

- 按尺寸缩放图片,但不保持原图片比例
代码如下:
- public static boolean operateBySize(String inSrc, String outSrc, int height, int width){
- boolean flag = false;
- if(checkNull(inSrc) || checkNull(outSrc)){
- return flag;
- }
- Builder<File> builder = Thumbnails.of(inSrc);
- builder.size(width, height);
- builder.keepAspectRatio(false);
- try {
- builder.toFile(outSrc);
- flag = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return flag;
- }
效果展示如下:

- 按角度旋转图片
代码如下:
- public static boolean rotate(String inSrc, String outSrc, double angle){
- boolean flag = false;
- if(checkNull(inSrc) || checkNull(outSrc)){
- return flag;
- }
- try {
- Thumbnails.of(inSrc).rotate(angle).size(1000, 1000).toFile(outSrc);
- flag = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return flag;
- }
效果展示如下:

- 给图片添加水印效果
代码如下:
- public static boolean addWaterImg(String inSrc, String outSrc,
- String waterImg, Positions position, double percent) {
- boolean flag = false;
- if (checkNull(inSrc) || checkNull(outSrc) || checkNull(waterImg)) {
- return flag;
- }
- try {
- Thumbnails
- .of(inSrc).size(1000, 1000)
- .watermark(position, ImageIO.read(new File(waterImg)), 0.1f)
- .outputQuality(percent).toFile(outSrc);
- flag = true;
- } catch (IOException e) {
- e.printStackTrace();
- }
- return flag;
- }
效果如下:

- 缩放图片写入到输出流中
代码如下:
- public static void toOutputStream(String inSrc, String outSrc, int height, int width){
- if (checkNull(inSrc) || checkNull(outSrc)) {
- return ;
- }
- OutputStream os = null;
- try {
- os = new FileOutputStream(outSrc);
- Thumbnails.of(inSrc).size(width, height).toOutputStream(os);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- os.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
效果如下:

【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】的更多相关文章
- css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”
一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...
- android项目 之 记事本(12) ----- 图片的等比例缩放及给图片加入边框
本文是自己学习所做笔记.欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在Android的UI开发中常常会遇到图片的缩放,就比方记事本,如今的图片都比較 ...
- php图片等比例缩放
新建文件index.php,需要在统计目录下有个图片为q.jpg(可根据源码进行更改图片的名称) 源代码如下: <?php$filename="q.jpg"; $per=0. ...
- css 如何实现图片等比例缩放
在进行布局的时候,很多PM都要求图片等比例缩放,而且要求图片不失真,不变形,但是UI设计好了这个div的宽度又不能随意更改,而后台传过来的图片也不是等比例的图片,这就比较难受了,写成 width: 1 ...
- js实现图片的等比例缩放
js实现图片的等比例缩放 CreateTime--2018年3月6日14:04:18 Author:Marydon 1.代码展示 /** * 图片按宽高比例进行自动缩放 * @param ImgO ...
- 【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)
1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...
- java使用Thumbnailator操作图片
Thumbnailator 是一个用来生成图像缩略图.裁切.旋转.添加水印等操作的 Java 类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图. Thumbnailato ...
- Thumbnailator java图片压缩,加水印,批量生成缩略图
地址:http://code.google.com/p/thumbnailator/ 1.指定大小进行缩放 //size(宽度, 高度) /* * 若图片横比200小,高比300小,不变 * 若图片横 ...
- Java三方---->Thumbnailator框架的使用
Thumbnailator是一个用来生成图像缩略图的 Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图.有了它我们就不用在费心思使用Image I/O API,J ...
随机推荐
- 微信小程序实现图片上传,预览,删除
wxml: <view class='imgBox'> <image class='imgList' wx:for="{{imgs}}" wx:for-item= ...
- 构造函数、原型对象prototype、实例、隐式原型__proto__的理解
(欢迎一起探讨,如果有什么地方写的不准确或是不正确也欢迎大家指出来~) PS: 内容中的__proto__可能会被markdown语法导致显示为proto. 建议将构造函数中的方法都定义到构造函数的原 ...
- Search Insert Position——二分法
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- AC日记——[HNOI2008]玩具装箱toy bzoj 1010
1010 思路: 斜率优化DP: 跪烂大佬 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 #de ...
- mybatis 报错: Invalid bound statement (not found)
错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): test.dao.Produc ...
- sql 预编译 in
sql : "select * from json where id in (:paramName)"; 在使用Hibernate时,sql in的预编译语句为query.setP ...
- Python开发基础-Day16import模块导入和包的调用
模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...
- [BZOJ 1857] 传送带
Link: BZOJ 1857 传送门 Solution: 首先中间的两个拐点$C,D$肯定都在传送带$A,B$上 接下来感性发现固定点A/C,另一个点C/D时间随位置的变化为单峰函数 这样就是三分套 ...
- [LOJ6179]Pyh的求和
首先有一个等式是$\varphi(ab)=\frac{\varphi(a)\varphi(b)d}{\varphi(d)}$,其中$d=(a,b)$,这个比较好证,直接按展开式计算可得$\varphi ...
- 【2-sat】Gym - 101201F - Illumination
题意:平面上l盏灯,每盏灯可以照亮横向的2*r+1个格子或者纵向的2*r+1个格子,让你确定每盏灯的方向,使得每个格子只被同一行的不超过一盏灯照亮,并且只被同一列的不超过一盏灯照亮.输出是否有解. 显 ...