文档章节

【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】

o
 osc_1ee7cxmx
发布于 2018/08/06 19:56
字数 642
阅读 12
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Thumbnailator概述:

   

      Thumbnailator是与Java界面流畅的缩略图生成库。它简化了通过提供一个API允许精细的缩略图生成调整生产从现有的图像文件的缩略图和图像对象的过程,同时保持所需要的最少的代码量。个人的理解,它对java自带的图片处理工具进行了优化,在效率和使用的方便程度上都要高于java自带的处理工具。Thumbnailator的主要常用功能如下:

  1.  按尺寸原比例缩放图片
  2. 按百分比缩放图片
  3. 按尺寸缩放图片,但不保持原图片比例
  4. 按角度旋转图片
  5. 给图片添加水印效果
  6. 缩放图片写入到输出流中

下面将对各个功能进行逐一的示范演示,以及最终的处理效果

  • 原图展示




 
 

  • 按尺寸原比例缩放图片

       代码如下:

 

Java代码   收藏代码
  1. public static boolean operateByMaxSize(String inSrc, String outSrc, int height, int width){  
  2.         boolean flag = false;  
  3.         if(checkNull(inSrc) || checkNull(outSrc)){  
  4.             return flag;  
  5.         }  
  6.         try {  
  7.             Thumbnails.of(inSrc).size(width, height).toFile(outSrc);  
  8.             flag = true;  
  9.         } catch (IOException e) {  
  10.             e.printStackTrace();  
  11.         }  
  12.         return flag;  
  13.     }  

 

 

     处理之后的图片效果如下:

    

 

 

  • 按百分比缩放图片

   代码如下:

 

Java代码   收藏代码
  1. public static boolean operateByPer(String inSrc, String outSrc, double percent){  
  2.         boolean flag = false;  
  3.         if(checkNull(inSrc) || checkNull(outSrc)){  
  4.             return flag;  
  5.         }  
  6.         Builder<File> builder = Thumbnails.of(inSrc);  
  7.         builder.scale(percent);  
  8.         try {  
  9.             builder.toFile(outSrc);  
  10.             flag = true;  
  11.         } catch (IOException e) {  
  12.             e.printStackTrace();  
  13.         }  
  14.         return flag;  
  15.     }  

 

 

   效果展示如下:



 

 

  • 按尺寸缩放图片,但不保持原图片比例

    代码如下:

 

Java代码   收藏代码
  1. public static boolean operateBySize(String inSrc, String outSrc, int height, int width){  
  2.         boolean flag = false;  
  3.         if(checkNull(inSrc) || checkNull(outSrc)){  
  4.             return flag;  
  5.         }  
  6.         Builder<File> builder = Thumbnails.of(inSrc);  
  7.         builder.size(width, height);  
  8.         builder.keepAspectRatio(false);  
  9.         try {  
  10.             builder.toFile(outSrc);  
  11.             flag = true;  
  12.         } catch (IOException e) {  
  13.             e.printStackTrace();  
  14.         }  
  15.         return flag;  
  16.     }  

 

 

    效果展示如下:

   

 

 

  • 按角度旋转图片

     代码如下:

 

Java代码   收藏代码
  1. public static boolean rotate(String inSrc, String outSrc, double angle){  
  2.         boolean flag = false;  
  3.         if(checkNull(inSrc) || checkNull(outSrc)){  
  4.             return flag;  
  5.         }  
  6.         try {  
  7.             Thumbnails.of(inSrc).rotate(angle).size(1000, 1000).toFile(outSrc);  
  8.             flag = true;  
  9.         } catch (IOException e) {  
  10.             e.printStackTrace();  
  11.         }  
  12.         return flag;  
  13.     }  

 

 

    效果展示如下:

   

 

 

 

  • 给图片添加水印效果

    代码如下:

Java代码   收藏代码
  1. public static boolean addWaterImg(String inSrc, String outSrc,  
  2.             String waterImg, Positions position, double percent) {  
  3.         boolean flag = false;  
  4.         if (checkNull(inSrc) || checkNull(outSrc) || checkNull(waterImg)) {  
  5.             return flag;  
  6.         }  
  7.         try {  
  8.             Thumbnails  
  9.                     .of(inSrc).size(1000, 1000)  
  10.                     .watermark(position, ImageIO.read(new File(waterImg)), 0.1f)  
  11.                     .outputQuality(percent).toFile(outSrc);  
  12.             flag = true;  
  13.         } catch (IOException e) {  
  14.             e.printStackTrace();  
  15.         }  
  16.         return flag;  
  17.     }  

 

   效果如下:



 

 

 

  • 缩放图片写入到输出流中

     代码如下:

Java代码   收藏代码
  1. public static void toOutputStream(String inSrc, String outSrc, int height, int width){  
  2.         if (checkNull(inSrc) || checkNull(outSrc)) {  
  3.             return ;  
  4.         }  
  5.         OutputStream os = null;  
  6.         try {  
  7.             os = new FileOutputStream(outSrc);  
  8.             Thumbnails.of(inSrc).size(width, height).toOutputStream(os);  
  9.         } catch (FileNotFoundException e) {  
  10.             e.printStackTrace();  
  11.         } catch (IOException e) {  
  12.             e.printStackTrace();  
  13.         } finally {  
  14.             try {  
  15.                 os.close();  
  16.             } catch (IOException e) {  
  17.                 e.printStackTrace();  
  18.             }  
  19.         }  
  20.     }  

 

   效果如下:



 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

038. RocketMQ 高性能最佳实践

1. 最佳实践之 Producer 1. 一个应用尽可能用一个 Topic,消息子类型用 tags 来标识,tags 可以由应用自由设置。 只有发送消息设置了 tags,消费方在订阅消息时,才可以利用 tags 在 broker...

华夏紫穹
47分钟前
32
0
QQ音乐Android客户端Web页面通用性能优化实践

QQ音乐 Android 客户端的 Web 页面日均 PV 达到千万量级,然而页面的打开耗时与 Native 页面相距甚远,需要系统性优化。本文将介绍 QQ 音乐 Android 客户端在进行 Web 页面通用性能优化过程中...

腾讯云开发者社区
今天
26
0
rabbitmq+sleuth+zinkip 分布式链路追踪

我们都知道,微服务之间通过feign传递,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引...

良许Linux
今天
16
0
5分钟搭建属于你的视频会议系统

前言 在疫情的推动下视频会议和线上办公大力发展,如果你也想了解视频会议,看看这篇文章吧 准备工作 一台Ubuntu18.04拥有公网IP的服务器 一个域名提前解析到这台服务器上 安全组设置规则tcp...

死磕音视频
今天
17
0
从文本JavaScript中删除HTML - Strip HTML from Text JavaScript

问题: 有没有一种简单的方法可以在JavaScript中获取html字符串并去除html? 解决方案: 参考一: https://stackoom.com/question/3RxM/从文本JavaScript中删除HTML 参考二: https://oldbug...

fyin1314
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部