Thumbnailator壓縮圖片

  Thumbnailator是一款不可多得的處理圖片的第三方工具包,它寫法簡單到讓人沒法相信,Java自己也有處理圖片壓縮的方法,可是代碼冗長到讓人痛不欲生,在篇末會給出Java自己的實現方式,作下對比,已體現Thumbnailator的強大。前段時間作分期的一種相對簡單的業務,須要傳遞用戶的身份信息,相關合同信息等相關圖片(作個業務傳這麼多圖片,我是用戶確定say goodbye了,不忍吐槽),其實圖片上傳後不須要顯示大圖,只須要縮略圖而已,在另外的審覈頁面才須要這樣的原圖。說了這個背景,那解約圖片太大傳輸太慢,嚴重影響體驗(這樣說顯得高大上,其實咱們部署了四個節點,並且對用戶資質要求嚴格,用戶量不會很大......),就拿時間解決下圖片壓縮的問題,就查到了這個Thumbnailator工具包,今天順便就把這個的主要用法寫下來,之後遇到直接拿來了,原圖就用女神-斯嘉麗約翰遜吧,哈哈哈。java

  好,上一張原圖git

  其他壓縮或者處理過的圖片就放到demo目錄下,在文末會給出地址github

  這裏方便都直接轉換成文件了,其實能夠轉成流的用於傳輸(我是廢話了...)工具

一.  Thumbnailator對圖片的處理 spa

  1.Thumbnailator對圖片進行指定尺寸的壓縮。code

sijialiyuantu

1 String result = "src/main/resources/images/";
2 Thumbnails.of(result + "sijili.jpg").size(200, 300).toFile(result + "image_200x300.jpg");

   2.Thumbnailator對圖片進行指定比例的壓縮。orm

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(0.5f).toFile(result + "image_0.5f.jpg");

  3.Thumbnailator對圖片進行旋轉。blog

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(1.0f).rotate(180).toFile(result + "image_r180.jpg");

      4.Thumbnailator對圖片進行格式轉換。圖片

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(1.0f).outputFormat("png").toFile(result + "image_sijiali.png");

      5.Thumbnailator對圖片進行剪裁。圖片處理

String result = "src/main/resources/images/";
Thumbnails.of(result + "sijili.jpg").scale(1.0f).sourceRegion(Positions.CENTER, 400, 400).toFile(result + "image_center.png");
Thumbnails.of(result + "sijili.jpg").sourceRegion(100, 100, 100, 100).scale(1.0f).toFile(result + "image_100_4.jpg");

     6.Thumbnailator對圖片進行加水印操做。

String result = "src/main/resources/images/";
 // watermark 參數 1.位置 2.水印圖片 3.透明度
Thumbnails.of(result + "sijili.jpg").scale(1.0f).watermark(Positions.CENTER, ImageIO.read(new File(result + "warter.jpg")), 0.25f).toFile(result + "image_warter.jpg");

  7.Thumbnailator對圖片進行加文字水印操做。

String result = "src/main/resources/images/";
BufferedImage bi = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setColor(Color.LIGHT_GRAY);
g.drawRect(0, 0, 10, 10);
char[] data = "liudTest".toCharArray();
g.drawChars(data, 0, data.length, 5, 32);

// watermark 參數 1.位置 2.水印 3.透明度
Thumbnails.of(result + "sijili.jpg").scale(1.0f).watermark(Positions.CENTER, bi, 1.0f).toFile(result + "image_warter_liud.jpg");

      Thumbnailator對圖片進行加文字水印的方式,並不推薦,能夠先對文字處理成圖片以後在加水印,看上面代碼的冗長也不符合Thumbnailator的風格不是。

 二 . Java原生對圖片的處理

String result = "src/main/resources/images/";
OutputStream os = new FileOutputStream(result + "sijili_out.jpg");

Image image = ImageIO.read(new File(result + "sijili.jpg"));

BufferedImage bufferedImage = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
        bufferedImage.getGraphics().drawImage(image.getScaledInstance(100, 100, image.SCALE_SMOOTH), 0, 0, null);

ImageIO.write(bufferedImage, "jpg",os);
os.close();

      關於圖片處理就先總結到這,代碼的地址就放到個人github下了,地址是https://github.com/liujava/myDailyNote,歡迎下載,並提出意見。

相關文章
相關標籤/搜索