1. 程式人生 > >【Thumbnailator】java 使用Thumbnailator實現等比例縮放圖片,旋轉圖片等【轉載】

【Thumbnailator】java 使用Thumbnailator實現等比例縮放圖片,旋轉圖片等【轉載】

strong class chm eight load angle true api ins

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

效果如下:


技術分享圖片

【Thumbnailator】java 使用Thumbnailator實現等比例縮放圖片,旋轉圖片等【轉載】