zoukankan      html  css  js  c++  java
  • 【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】

    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.     }  

       效果如下:



     

  • 相关阅读:
    MQTT TLS 加密传输
    python多进程并发redis
    各种消息队列的特点
    mqtt异步publish方法
    Numpy API Analysis
    Karma install steps for unit test of Angular JS app
    reinstall bower command
    Simulate getter in JavaScript by valueOf and toString method
    How to: Raise and Consume Events
    获取对象的类型信息 (JavaScript)
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9432248.html
Copyright © 2011-2022 走看看