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

       效果如下:



     

  • 相关阅读:
    C#低级Windows API钩子拦截键盘输入
    PowerDesigner 11 使用心得
    c# windows服务状态、启动和停止服务
    PowerDesigner设计数据库
    C# Windows帐户和目录添加用户权限方法
    ASP.NET的控件Gridview在Firefox中的Border显示问题
    去掉图片连接的虚框
    http://www.ediyang.com/demo/DD_Png/
    WEB前端开发规范文档(for: mrthink.net)
    .net下载文件的常用方法汇总
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9432248.html
Copyright © 2011-2022 走看看